結論:互換性エラーと機能低下を分けて判断する

Claude Code 2.1.288では、MantleやGatewayなど構造化出力を拒否する経路で、session title・memory recall・prompt hooksが失敗する問題への対処としてCLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTSが追加されました。ただし、これはエラーを回避する互換性設定であり、モデル性能や安全性を高める設定ではありません。原因の経路を特定し、必要なscopeだけで有効化します。

Anthropic公式のClaude Code changelogは2.1.288で、structured outputsを拒否するGatewayなどでの不具合修正と環境変数を案内しています。settings公式リファレンスはmanaged settings、command line、project local、shared project、userの優先順位を説明しています。Gatewayを組織経路として使う場合はClaude Apps Gateway公式資料も対象のserver・provider・versionと一緒にreadbackしてください。

structured outputsが問題になる境界

structured outputsは、自由文ではなく定義された構造に沿って返すための経路です。Claude Code内部では、session titleやprompt hookなど複数の補助機能が利用する可能性があります。Gatewayがリクエストをそのまま中継せず、特定のresponse formatを拒否・変換すると、メインの会話は動いても補助機能だけが失敗することがあります。

症状先に分ける原因判断
titleが作れないstructured output拒否、provider応答、保存debug logとGateway応答を比較
memory recallだけ失敗sessionの補助リクエスト本文の生成失敗と混同しない
prompt hookが止まるhook実行、schema、権限hook単体の再現を取る
全機能が遅いGateway、認証、providerの経路compatibility設定の前に疎通を測る

この切り分けは、Claude Codeがエラーを出したから直ちに環境変数を全員へ配る、という判断を避けるためです。既存のGateway認証エラーの記事では認証・API経路を、組織ポリシーの記事ではmanaged settingsの適用を扱っています。本稿はstructured outputsの互換性に限定します。

8手順で設定の必要性を確認する

  1. claude --version、provider、Gateway server version、sessionの実行面を記録します。
  2. 失敗する機能をtitle、memory、prompt hook、structured responseのどれかに分けます。
  3. Claude Codeのdebug logとGatewayのrequest・response・HTTP statusを同じ時刻で保存します。
  4. 直接providerへ送る検証環境とGateway経由の環境で、同じprompt・model・設定を比較します。
  5. Gatewayがstructured outputまたはresponse schemaを拒否している事実を確認します。
  6. 影響範囲を限定したsessionまたは端末でCLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTSを設定します。
  7. title、memory、hook、再開、通常会話を一つずつ再試行し、直った機能と失われた機能を記録します。
  8. 原因が修正されたら環境変数を外し、同じ回帰テストを実行して通常経路へ戻します。

設定値の配置は、shell、user settings、project settings、managed settingsのどこへ置くかを分けます。秘密情報を含むGatewayのheadersをprojectへ置かないのと同じように、互換性フラグをrepositoryへ無条件にcommitしない選択もあります。設定を追加する場合は、対象、owner、期限、rollbackを一緒に記録します。

設定scopeと運用の比較

配置向いている状態リスク
一時shell再現確認、個別の障害調査別sessionへ引き継がれない
user同じ端末の限定provider別projectへ影響する
project全員が同じGatewayを使う検証意図せず本番へ配布する
managed組織で経路を統一する範囲が広くrollbackに時間がかかる

公式の優先順位ではmanaged settingsが最も高く、command line、project local、shared project、userの順です。ただし、同じ変数名を複数箇所に置くと原因が見えにくくなります。最初は一時設定で再現し、検証が終わるまでmanagedへ昇格させないことを勧めます。Gatewayの仕様、契約、利用できるモデル、データ保持は公開直前にも公式画面でreadbackします。

公開前チェックリスト

  • エラーがGateway・providerのstructured output拒否である
  • Claude Code versionとGateway server versionを記録した
  • 直接経路とGateway経路で同じ条件を比較した
  • 環境変数を対象session・端末・providerへ限定した
  • title、memory、hook、通常会話の回帰を確認した
  • 設定のowner、期限、rollback、社内告知を決めた
  • 機能低下や別の失敗を「修正済み」と誤認していない

企業利用では、互換性フラグを標準設定にする前に、Gatewayが何を変換しているかを説明できる状態にします。structured outputを無効化した後に、hookやmemoryのエラーが表面化しなくなるだけなら、監査の観測点が減っている可能性があります。失敗件数、再試行、手動作業、データ送信先を比較して判断します。

FAQ

設定すると全ての構造化出力が無効になりますか?
環境変数の具体的な適用範囲はversion・provider・実行面に依存します。対象sessionでtitle、memory、hook、通常会話を実測し、公式changelogと実ログを照合してください。
Gatewayのエラーなら必ずこの設定を使いますか?
いいえ。認証、model、schema変換、provider制限の可能性を先に分けます。structured outputs拒否と確認できた場合に限り、限定scopeで検証します。
互換性診断を無料で相談できますか?
できます。version、provider、Gateway経路、ログのマスキング済み抜粋、設定scopeを無料診断(60秒)へまとめてください。

復旧後に残す証跡は、成功したことだけでは不十分です。どの経路で、どの機能が、どの設定の有無で変わったかを表にします。エラーメッセージやGatewayログにはprompt、token、個人情報が含まれる場合があるため、共有前にマスキングします。providerのサポートへ問い合わせる場合も、最小限の再現条件を作ります。

更新を継続する場合は、Claude Codeのchangelogを見て、structured outputsに関する修正が入った時にフラグを外すテストを自動化します。互換性のための暫定設定を永続化すると、別providerへの移行や新しい機能追加の障害になります。期限を過ぎた設定は、責任者が再承認しない限り削除するルールにします。