Claude Code: 長いコマンド出力が切れるなら BASH_MAX_OUTPUT_LENGTH と bashOutputMaxChars を使い分ける
Bash ツールの出力はある長さで切られ、失敗したテストのログの肝心な所が見えないことがある。読み戻す幅は環境変数 BASH_MAX_OUTPUT_LENGTH、会話に直接載せる上限は設定 bashOutputMaxChars で決まる。
どんな時に使う?
- 長いテストログの途中が抜け、Claude が原因を推測で直そうとする
- 逆に巨大な出力がそのまま会話に入り、コンテキストを食う
2つの違い(公式ドキュメントより)
BASH_MAX_OUTPUT_LENGTH(環境変数): Claude が出力を読み戻せる幅。既定 30000 文字、最大 150000 文字。bashOutputMaxCharsを設定しているとこちらは無視されるbashOutputMaxChars(settings.json、v2.1.261 以降): 4000〜128000 の範囲に丸められる- 成功したコマンドの出力が上限を超えると、ファイルのパスと先頭 2,000 文字のプレビューが返る(全文はファイルを読めば見える)
- 失敗したコマンドは、読み戻し幅から頭と末尾を切り出した約 10,000 文字が返る
json
{
"bashOutputMaxChars": 60000
}または
json
{
"env": { "BASH_MAX_OUTPUT_LENGTH": "80000" }
}注意点
- 大きくするほどコンテキストを消費する。まず
npm test 2>&1 | tail -200やレポーター設定で出力そのものを絞るのが先。出力を圧縮する道具は rtk でエージェントが読むコマンド出力を圧縮する(+Claude Code のトークン節約8施策) - 時間切れで途中までしか出ない場合はタイムアウト側の問題: Claude Code: 長いテストやビルドが2分で切れるなら BASH_DEFAULT_TIMEOUT_MS を延ばす
出典
- @oswrav 2026-10-28「Claude Code 小技 No.14」: @oswrav · 2026-10-28
- 公式: code.claude.com 、 code.claude.com (Output limits)、 code.claude.com (bashOutputMaxChars)