◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-07-18上級

プランモードを「読むだけ」と信じていた — 前提を機構で確かめ直す

Claude Code 2.1.212 で、プランモードがファイルを変更する Bash を許可プロンプトも canUseTool も通さず実行していた不具合が修正されました。前提が崩れていた期間に何が起きうるのか、手元で確かめる方法と、モード名に安全性を預けない設計をまとめます。

Claude Code265パーミッション3プランモード自動運用17セキュリティ21

✦ プレミアム記事

CHANGELOG の1行で手が止まりました。

「プランモードが touch や rm といったファイルを変更する Bash コマンドを、許可プロンプトも SDK の canUseTool コールバックも通さずに実行してしまう不具合を修正」。

私は夜間に回している調査系のジョブで、プランモードを「読むだけのモード」と見なしていました。だから deny ルールを緩め、canUseTool のログも眺める程度に留めていたのです。守られていると思っていた場所が、実は素通りだった。そう気づいたときの、背筋のあたりが少し冷える感じを、うまく言葉にできませんでした。

幸い、私の環境で実害は見つかりませんでした。けれど「見つからなかった」と「起きなかった」は違います。この記事は、その差を埋めるために手を動かした記録です。

何が素通りしていたのか

まず事実を整理します。2026-07-18 に公開された Claude Code 2.1.212 で修正されたのは、次の経路です。

経路 修正前の挙動 修正後の挙動
対話セッションの許可プロンプト プランモード中のファイル変更 Bash で表示されない 通常どおり確認を求める
SDK の canUseTool コールバック 呼ばれずに実行される 他のツール呼び出しと同じく通過する
settings の deny ルール 評価される(この経路は無事) 変わらず評価される

重要なのは3行目です。deny ルールは効いていました。つまり、機構として明示的に書かれた禁止は守られ、モードの性質に暗黙で期待していた部分だけが崩れていたことになります。

この非対称は、示唆的だと感じています。私が緩めていたのは、まさに「モードが読み取り専用だから、ルールは要らないだろう」と判断した箇所でした。前提に寄りかかった分だけ、穴が空いていたわけです。

「読み取り専用」とは、どこにも書かれていなかった

事後に自分の思い込みの出どころを辿ってみました。

公式ドキュメントでプランモードは、実装に入る前に計画を立てるためのモードとして説明されています。読んでいて自然に浮かぶのは「調査と提案をするモード」という像です。実際、体感としても書き込みはほとんど起きません。

けれど「ファイルを変更するツールが機構として遮断される」とは、どこにも書かれていませんでした。私は体感を仕様として読み替えていたのです。

ここが一番の学びでした。モード名が示すのは意図であって、保証ではありません。意図に沿って動くことがほとんどだからこそ、保証だと錯覚しやすい。錯覚したまま防御を外すと、例外が起きた1回目に全部通ります。

✦

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

この記事の続きを読む

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

この記事で得られること
✦プランモードで書き込みが素通りしていた境界を、手元の1コマンドで再現・確認する検証ハーネス
✦「モードが守ってくれる」前提を deny ルールと canUseTool の二重防御に置き換える具体的な設定
✦自分の設定から「暗黙の前提」を洗い出す5ステップの監査手順とチェック観点
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⟐ Claude Code2026-10-14
onFailure を block にしても、jq が無い環境では公式例の rm -rf ブロックは素通りしました
PreToolUse の門番フックは、落ちたときに通すのか止めるのか。公式例を jq の無い環境で走らせると exit 0 で素通りしました。終了コード10通りの実測、直し方、settings.json を走査して素通りを洗い出すスクリプトをまとめます。
⟐ Claude Code2026-09-05
拒否ルールが見ていたのはファイル名で、そこへ届く経路ではありませんでした
deny に書いた 1 行が、同じファイルへ届く別の書き方を素通りさせていました。経路を機械的に並べて、版を上げた日に効きを確かめる小さな検査表の作り方をお伝えします。
⟐ Claude Code2026-08-21
Claude Code の read deny が許可フォルダの内側まで届いていなかった話
秘密ファイルとソースが同じツリーに同居する個人開発環境で、permissions.deny の Read ルールが実際にどのファイルまで届いているかを数え直した記録です。棚卸し用のスクリプトつき。