Skip to content

CLAUDE_CODE_FORK_SUBAGENT=1 が非インタラクティブセッションで動作

原文(日本語に翻訳)

SDK および claude -p: CLAUDE_CODE_FORK_SUBAGENT=1 が非インタラクティブセッションで動作するようになりました。

原文(英語)

SDK and claude -p: CLAUDE_CODE_FORK_SUBAGENT=1 now works in non-interactive sessions

概要

Claude Code v2.1.121 では、CLAUDE_CODE_FORK_SUBAGENT=1 環境変数が SDK および claude -p(パイプモード)の非インタラクティブセッションでも機能するようになりました。この変数を設定すると、Claude がサブエージェントを呼び出す際に新しいプロセスをフォークして並列実行できるようになります。CI/CD パイプラインやバッチ処理など、ユーザーの介入なしに Claude Code を実行する環境で、サブエージェントのフォーク機能を活用できます。

基本的な使い方

bash
# 非インタラクティブモードでサブエージェントフォークを有効化
export CLAUDE_CODE_FORK_SUBAGENT=1

# -p フラグでパイプモードで実行
echo "複数のファイルを並列で分析してください" | claude -p

# または SDK から呼び出す場合も同様に環境変数を設定

実践例

CI/CD パイプラインでの並列処理

yaml
# .github/workflows/analyze.yml
name: Code Analysis

jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Parallel code analysis
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
          CLAUDE_CODE_FORK_SUBAGENT: "1"  # サブエージェント並列実行を有効化
        run: |
          echo "src/ ディレクトリ全体のコード品質を分析して報告してください" | claude -p

バッチ処理スクリプト

bash
#!/bin/bash
# batch-review.sh
export CLAUDE_CODE_FORK_SUBAGENT=1

for repo in repo1 repo2 repo3; do
  cd "/workspace/$repo"
  echo "このリポジトリのセキュリティ問題を特定してください" | claude -p > "/reports/${repo}-security.md"
done

Python SDK での活用

python
import os
import subprocess

os.environ["CLAUDE_CODE_FORK_SUBAGENT"] = "1"

# SDK 経由で非インタラクティブに Claude Code を呼び出す
result = subprocess.run(
    ["claude", "-p", "--output-format", "json"],
    input="プロジェクトの依存関係を分析してセキュリティリスクを報告してください",
    capture_output=True,
    text=True
)

注意点

  • CLAUDE_CODE_FORK_SUBAGENT=1 はサブエージェントをフォークする動作を制御します
  • 非インタラクティブセッション(-p フラグ、SDK 経由)での実行時に有効になります
  • フォークによって並列実行が可能になりますが、リソース消費(メモリ・API コスト)が増加します
  • CI 環境では API レート制限に注意してください

関連情報