CLAUDE LABEN
RELEASE — Claude Code v2.1.246 が8月26日に公開されました。Bash の allow ルールでサブコマンドの前にワイルドカードを置いた書き方に、起動時警告が出ますPERMISSIONS — /permissions に Auto モードタブが加わりました。既定が auto になった後、どの操作が自動で通りどこで止まるかを一箇所で確認できますMEMORY — 長い対話セッションでメモリが際限なく増える問題が修正されました。サブエージェントのツール結果が、直近の表示ウィンドウを外れた時点で解放されますMCP — headless とリモートのセッションで、受信メッセージに割り込まれたツール呼び出しが「完了・出力なし」ではなく明示的な interrupted エラーとして報告されますRUNNER — claude self-hosted-runner に --proxy-authorization-command と --proxy-authorization-file が追加されました。接続ごとに認証ヘッダを発行する egress プロキシ向けですLIMITS — 週次上限50%増の延長は8月31日までです。Pro・Max・Team とシート課金の Enterprise が対象で、残り4日となりましたRELEASE — Claude Code v2.1.246 が8月26日に公開されました。Bash の allow ルールでサブコマンドの前にワイルドカードを置いた書き方に、起動時警告が出ますPERMISSIONS — /permissions に Auto モードタブが加わりました。既定が auto になった後、どの操作が自動で通りどこで止まるかを一箇所で確認できますMEMORY — 長い対話セッションでメモリが際限なく増える問題が修正されました。サブエージェントのツール結果が、直近の表示ウィンドウを外れた時点で解放されますMCP — headless とリモートのセッションで、受信メッセージに割り込まれたツール呼び出しが「完了・出力なし」ではなく明示的な interrupted エラーとして報告されますRUNNER — claude self-hosted-runner に --proxy-authorization-command と --proxy-authorization-file が追加されました。接続ごとに認証ヘッダを発行する egress プロキシ向けですLIMITS — 週次上限50%増の延長は8月31日までです。Pro・Max・Team とシート課金の Enterprise が対象で、残り4日となりました
記事一覧/Claude Code
Claude Code/2026-08-28中級

検証スクリプトの出力を、そのまま hook から返してはいけません

hook に足した検査スクリプトは正しく動いていたのに、会話のほうが先に容量を使い果たしていました。833ファイルを走査して58バイトしか返さない検査と、同じ対象で42KBを返す検査を実測で並べ、hook に出力予算を設ける設計をまとめます。

Claude Code238hooks17自動化82コンテキスト設計3品質ゲート5

プレミアム記事

検査は、最後まで正しく動いていました。壊れていたのは会話のほうでした。

編集のたびに静的検査を走らせる hook を足した日のことです。個人開発で複数のリポジトリを行き来していると、検査は手で思い出して走らせるより、編集に紐づけて自動で挟むほうが確実に効きます。そう考えて入れたものでした。検査そのものは意図どおりに動き、違反も正しく拾っていました。ところが数十回の編集を挟んだあたりから、応答が目に見えて鈍くなり、やがて長いプロンプトを受け付けなくなりました。

原因を探して、私はしばらく検査スクリプトの中身を見ていました。無駄な処理はないか、遅い正規表現はないか。けれど問題は処理時間ではありませんでした。検査が返していた文字列が、そのまま毎回の会話に積み上がっていたのです。

hook のタイムアウトについてはhook が command timed out で止まるときの切り分けで扱いました。今回はそれとは別の軸、つまり「時間ではなく量」の話になります。

走査した数ではなく、返した数が文脈になります

まず、自分の手元で実際に測った数字を置きます。同じリポジトリ(MDX 833ファイル)に対して、性格の違う検査をそれぞれ1回ずつ走らせ、標準出力のバイト数と行数を記録しました。

処理走査対象出力バイト行数概算トークン
フロントマター整合検査(合格)833ファイル58 B1約26
逐語重複スキャン(合格)833ファイル109 B1約50
リダイレクト整合検査(合格)リポジトリ全体126 B1約57
単一ファイル検査(違反あり)2ファイル893 B18約406
全件列挙型の grep833ファイル42,280 B398約19,218
対象ファイルの全文出力1ディレクトリ5,748,215 B約261万

※ トークン換算は日本語混在のテキストを 1トークン ≈ 2.2バイトとして概算したものです。実際の値はモデルとトークナイザによって変わります。

ここで目を引くのは、上から3つと下から2つの落差です。同じ833ファイルを走査していながら、返す量は58バイトと42,280バイト、およそ728倍の開きがあります。走査した対象の規模は、出力量をまったく決めていません。決めているのは、書いた人がどう返すことにしたか、それだけです。

私はこの表を作るまで、無意識に「重い検査ほど出力も重い」と思い込んでいました。実際には逆のことが起きます。よく設計された全件検査は合格時に1行しか返さず、雑に書いた grep -rn は一致した行を全部並べます。後者のほうがはるかに軽い処理なのに、会話に対する負荷は3桁大きい。

最下段の 5.7MB は、比較のために置いた上限です。この量をそのまま返せば、100万トークンの文脈でも到底収まりません。「hook の出力でセッションが応答しなくなる」という現象は、抽象的な危険ではなく、cat を一度書き間違えるだけで届く距離にあります。

成功したときこそ、何も言わないほうがよいのです

hook が返した文字列は、種類によっては次のターンのコンテキストへ入ります。ここが通常のシェル作業と決定的に違うところです。ターミナルで長い出力が流れても、それは画面をスクロールして消えるだけ。けれど hook の出力は消えません。残り、積み上がり、以降のすべてのやり取りの原価になります

そう考えると、設計の指針はかなりはっきりします。

  • 合格したときは、合格したという事実だけを返す
  • 違反したときだけ、直すのに必要な最小限を返す
  • 全文・全件・生ログは、返さずにファイルへ書く

先ほどの表の上から3行は、まさにこの形です。833ファイルを検査して「クリーン」と1行返す。読み手にとって必要な情報はそれで足りています。どのファイルが合格したかを列挙しても、誰の判断も変わりません。

逆に、違反したときは話が別です。単一ファイル検査の 893バイト・18行は、違反の項目名と該当箇所を含んでいます。この程度の量なら、その場で直すために必要な情報として十分に釣り合います。

なぜ「全部見せておけば安全」が裏目に出るのか

情報は多いほうが安全に思えます。実際、人間が読むログならその感覚は正しいことが多い。

しかし相手が有限の文脈を持つモデルである場合、判断材料の総量には天井があります。天井まで埋めてしまえば、後から来る本当に重要な情報が入る場所がなくなる。しかも埋めた中身の大半は「問題がなかったファイルの名前」です。

判断を変えない情報は、載せた瞬間から純粋な負債になります。 これは検査に限らず、hook から何かを返すときの共通原則として置いておく価値があります。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
検査スクリプトを hook に足す前に、それが会話へ何バイト返すのかを見積もれるようになります
成功時と失敗時で出力量を分ける書き方が身につき、合格した検査が静かに文脈を食い潰す状態を避けられるようになります
833ファイルを走査しても返す出力を1行に保てる理由が分かり、自分の hook に出力予算を設定できるようになります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

Claude Code2026-07-01
Claude Code をアップデートしたら hook が発火しなくなった — ハイフン入り matcher の厳密一致化(v2.1.195)
Claude Code v2.1.195 でハイフンを含む hook matcher が部分一致から厳密一致に変わり、既存の PreToolUse フックが静かに発火しなくなりました。原因の切り分けと、壊れない matcher の書き方をまとめます。
Claude Code2026-06-14
サブエージェントの出力を採点し、不合格なら作り直させる SubagentStop フック
サブエージェントの成果物に時々ルール違反が混じる問題へ、SubagentStopフックで自動採点と再依頼を組み込みます。採点基準をJSONルーブリックに固定する理由、トランスクリプトを読む採点器の実装、無限ループを防ぐガード、運用して見えた実務的な勘所を動くコード付きで整理します。
Claude Code2026-08-27
リポジトリに置いた allow を信じるか、環境側の信頼登録に寄せるか
使い捨ての実行環境で Claude Code を非対話で走らせると、リポジトリ内の permissions.allow が信頼待ちのまま落ちます。何が落ちて何が残るのかを 2.1.246 で確かめ、許可設定の置き場所を決め、起動前に検出するプリフライトを用意します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →