Skip to content

原文(日本語に翻訳)

外部セッションが --json-schema を使用し、サブエージェントもスキーマを指定している場合に、ワークフローのサブエージェントがAPI 400エラーで失敗する問題を修正しました。

原文(英語)

Fixed workflow subagents failing with API 400 when the outer session uses --json-schema and the subagent also specifies a schema.

概要

--json-schema フラグで構造化出力スキーマを指定して実行しているセッション内で、サブエージェント(ワークフロー)もスキーマを独自に指定している場合に、API 400エラーが発生してサブエージェントが失敗するバグが修正されました。外部セッションとサブエージェントが異なるJSONスキーマを独立して使用できるようになります。

基本的な使い方

--json-schema を使ったセッションでサブエージェントを呼び出す場合:

bash
# 外部セッションでJSONスキーマを使用
claude --json-schema '{"type": "object", "properties": {"result": {"type": "string"}}}' \
  -p "データを解析してください"

修正後は、このセッション内でサブエージェントが独自のスキーマを使用しても、API 400エラーが発生しません。

実践例

ユースケース: 構造化出力を使ったワークフロー

bash
# 親セッションのスキーマ
cat > /tmp/parent-schema.json << 'EOF'
{
  "type": "object",
  "properties": {
    "summary": {"type": "string"},
    "tasks": {"type": "array", "items": {"type": "string"}}
  }
}
EOF

# 親セッションを起動
claude --json-schema "$(cat /tmp/parent-schema.json)" -p "プロジェクト計画を立ててください"

このセッション内でサブエージェントが別のスキーマを使う場合:

# CLAUDE.md や会話内でのサブエージェント設定
---
json_schema: |
  {
    "type": "object",
    "properties": {
      "code": {"type": "string"},
      "tests": {"type": "string"}
    }
  }
---

修正前はこの組み合わせでAPI 400エラーが発生していましたが、修正後は正常に動作します。

ユースケース: 複数ステップの構造化出力パイプライン

bash
# ステップ1: 分析(外部セッション)
ANALYSIS=$(claude --json-schema "$ANALYSIS_SCHEMA" -p "コードを分析して")

# ステップ2: 実装(サブエージェントも独自スキーマを使用)
# 修正後: ネストしたスキーマ使用が正常に動作
claude --json-schema "$IMPL_SCHEMA" -p "分析結果に基づいて実装して: $ANALYSIS"

注意点

  • この問題はサブエージェントを含むワークフローで --json-schema を使用する場合に特有のものでした
  • API 400エラーは「Bad Request」を意味し、スキーマの競合が原因でした
  • --json-schema は構造化出力が必要な場合(他のシステムとのデータ連携など)に有用です

関連情報