◉CLAUDE LABEN
●2.1.289 — Claude Code 2.1.289(10月3日)で、複合シェルコマンドの deny/ask ルールと、コードブロックでの端末フリーズが修正されました●10/07 — Claude Desktop / Cowork の管理構成キー旧綴りの受付終了まで残り2日。締切後は fail-closed で読み込まれません●ENV — DISABLE_TELEMETRY を 0 にしても無効にならない、という報告(#89386)が出ています。真偽値の読み方が論点です●NEW — 11月30日に止まる claude-sonnet-4-5、置き換え前に請求の差分を確かめる●MODS — Claude Code 2.1.287 から Claude Mods が入りました。プラグインがより深い挙動を変えられるようになります●CONN — 同じ Connector を別アカウントで使い分けたいという要望(#27302)に260件超のコメント。仕事用と私用の分け方を考える題材です●2.1.289 — Claude Code 2.1.289(10月3日)で、複合シェルコマンドの deny/ask ルールと、コードブロックでの端末フリーズが修正されました●10/07 — Claude Desktop / Cowork の管理構成キー旧綴りの受付終了まで残り2日。締切後は fail-closed で読み込まれません●ENV — DISABLE_TELEMETRY を 0 にしても無効にならない、という報告(#89386)が出ています。真偽値の読み方が論点です●NEW — 11月30日に止まる claude-sonnet-4-5、置き換え前に請求の差分を確かめる●MODS — Claude Code 2.1.287 から Claude Mods が入りました。プラグインがより深い挙動を変えられるようになります●CONN — 同じ Connector を別アカウントで使い分けたいという要望(#27302)に260件超のコメント。仕事用と私用の分け方を考える題材です
記事一覧/Claude Code
⟐ Claude Code/2026-08-21中級

Claude Code の read deny が許可フォルダの内側まで届いていなかった話

秘密ファイルとソースが同じツリーに同居する個人開発環境で、permissions.deny の Read ルールが実際にどのファイルまで届いているかを数え直した記録です。棚卸し用のスクリプトつき。

Claude Code259permissions4settings.json8セキュリティ20個人開発128

✦ プレミアム記事

作業ツリーの棚卸しをしていて、手が止まりました。

.env は deny に書いてあります。secrets/ も丸ごと書いてあります。それなのに tools/backup/.env.bak は、どのルールにも当たっていませんでした。

半年前の自分が、設定を差し替える前に取っておいたバックアップです。中身は当時のまま、有効なキーが入っています。

先に結論を書きます

permissions.deny の Read ルールは、書いたパターンに一致したものだけを拒否します。当たり前の話ですが、実際の作業ツリーでこれが何を意味するかというと、ルールを何行書いたかではなく、秘密ファイルが何件残っているかで測らないと安全性は分からない、ということです。

私の環境では、素朴に2行書いた状態から数え直したところ、8件が素通りしていました。ルール側を10行に組み直して0件になりました。

以下は、その数え方と、組み直したあとに残った判断の話です。

秘密とソースが同じツリーに同居している

個人開発では、リポジトリの綺麗な分離がそのまま成り立たないことがあります。

私の場合、iOS と Android のアプリ、それに複数のサイトが1つの同期フォルダの下に並んでいます。アプリ側には Google Play への提出に使う署名鍵や google-services.json があり、サイト側には Cloudflare 用の .dev.vars があります。ビルド設定や素材と一緒に置いておかないと日々の作業が回らないので、物理的に分けるという選択が現実的ではありませんでした。

つまり、エージェントに読ませたいファイルと、絶対に読ませたくないファイルが、同じディレクトリの数階層下に混ざっています。この状態で permissions.allow に作業ルートを足すと、拒否ルールの精度がそのまま安全性になります。

出発点の設定は、こうでした。

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)"
    ]
  }
}

書いた当時は、これで足りていたはずでした。足りなくなったのは、ツリーが育ったからです。

✦

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

この記事の続きを読む

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

この記事で得られること
✦自分が書いた deny ルールが実際にどのファイルまで届いているかを、事故が起きる前に一覧で確かめられるようになる
✦バックアップ拡張子やリネームで秘密ファイルが網から外れる穴を、設定を書き換える段階で塞げるようになる
✦読み取り拒否だけに頼らず、ツリーの置き方まで含めた二段構えで守り方を選べるようになる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⟐ Claude Code2026-08-20
Claude Code で「今後確認しない」を押した範囲を棚卸しする
確認ダイアログで「今後確認しない」を選んだあと、自分が何を許可したのかを説明できるでしょうか。手元の設定を数えるスクリプトと、最小から足していく権限の組み立て方をまとめました。
⟐ Claude Code2026-08-27
リポジトリに置いた allow を信じるか、環境側の信頼登録に寄せるか
使い捨ての実行環境で Claude Code を非対話で走らせると、リポジトリ内の permissions.allow が信頼待ちのまま落ちます。何が落ちて何が残るのかを 2.1.246 で確かめ、許可設定の置き場所を決め、起動前に検出するプリフライトを用意します。
⟐ Claude Code2026-09-20
Pro を払っているのに Console に請求が立っていたとき、私が最初に見た一行
サブスクリプションと API の従量は別会計で、Claude Code はそのどちらでも動きます。どちらが選ばれているかを決めるのは優先順位で、ログインはその最下段です。status の読み方と、無人実行だけが別の答えを返す理由を書き残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます