blog

制作の裏側

「常に許可」が積もると、settings.json に穴があく——Claude Code の権限設定を棚卸しした話

更新 2026年7月6日

※トップの画像は、この記事の後半でつくる自作ツールの画面です。

Claude Code を実務で毎日使っています。ある日ふと settings.json を開いたら、許可リスト(allow)が 277行まで膨らんでいました。Claude Code は「このコマンドを常に許可しますか?」に「はい」を押すたび、そのコマンドを設定へ追記します。便利な反面、一回きりのコマンドが延々と積もっていく。気づけば、自分でも把握していない許可の山ができていました。

棚卸しして、ひやりとしました。deny(禁止)ブロックが一つも無い。つまり、許可をすり抜けた操作を止める“最後の砦”が無い状態です。

何が無防備だったか

具体的に挙げます。

  • 秘密ファイルを守る deny が無い。 .envwp-config.php(DB接続情報)を、AIがそのまま読める状態。プロンプトで「読むな」と書いても、それは口約束で、設定上の門番ではありません。
  • 本番へ任意コマンドが通るワイルドカード許可。 過去の作業の名残で ssh <本番> * のような許可が残っていました。理屈の上では rm -rf すら無確認で本番に流せてしまう。
  • 破壊コマンドが確認も遮断もされない。 rm -rfgit push --force が、確認なしで通る。
cc-guardが危険な設定を赤で検知した画面
cc-guard が危険な設定を赤で検知(画面はサンプル設定の診断)

大事なのは、これが特別だらしない設定だったわけではないことです。allow は「常に許可」を押すたびに自動で伸びる。放っておけば、誰の設定もこうなります。構造的な落とし穴です。

何を直したか——判断のログ

検知するだけなら誰でもできます。価値があるのは「何を足し、何を捨て、なぜそう裁いたか」のほうだと思っています。

  • 足した①:deny の床(最低限ここだけは守る“下限”。秘密ファイル遮断)を“グローバル”に。 .envwp-config.php/鍵ファイルを読み書きさせない。案件ごとに重複させず、全案件に一度で効くよう、ユーザー全体の設定に置きました。
  • 足した②:破壊操作は deny ではなく ask(毎回確認)に。 rm -rfgit push --force は完全に禁じると実務で困る場面があります。止めるのではなく、毎回ひと呼吸おいて確認する——これが安全と速度の折り合いだと判断しました。
  • 捨てた:危険なワイルドカード許可ssh *cat > *node -e など)。利便性は下がりますが、“何でも実行できる口”を残すリスクのほうが重い。消しても、次に使うとき一度だけ確認が出るだけです。

AIに任せた所と、人が裁いた所

正直に書きます。検知ルール(どんな文字列が危ないか)の洗い出しは、AIと一緒に詰めました。そこはAIが速い。ですが、「何を完全に禁止し、何を確認に留め、何を許すか」の線引きは、人が決めるべき判断でした。プロジェクトの事情と、壊れたときに取り返しがつくかの肌感覚が要る。AIに丸投げできない部分です。

作ったもの:cc-guard

同じ穴を他の人も持っているはずだと思い、貼るだけで診断して直す単一ページを作りました。settings.json を貼ると、上の穴を検知して赤で示し、安全の床(deny / ask)をマージした“完成形の settings.json”を返します。それを丸ごとコピーして置き換えるだけ。

貼った設定に安全床をマージした完成形を返す画面
貼った設定に安全床をマージした完成形 settings.json を返す

ひとつ決めたのは、入力を一切サーバーに送らないこと。設定ファイルは機微情報です。全部ブラウザの中だけで処理し、通信もAPIもありません。診断ツールが情報を抜いていては本末転倒なので。

試せます: https://include-jp.com/labs/cc-guard/

技術仕様
構成:単一HTML・完全クライアントサイド(外部送信ゼロ・サーバー無し)
検知方式:静的な辞書+正規表現(実行時にLLMを呼ばない)
検知カテゴリ:秘密ファイルの読み取り穴/破壊コマンドの素通し/deny不在/Bash(prefix:*) 形の危険な接頭辞許可/defaultMode: bypassPermissions/広域 Read・Edit・Write/MCP書き込み系/additionalDirectories の機微ディレクトリ/Win・Mac 非互換フック
出力:検知結果+元設定に安全な最低ライン(deny/ask)をマージした完成形 settings.json

まとめ

AIに開発環境を任せるほど、「自分が何を許しているか」を定期的に見る習慣が要ります。allow は放置で膨らむ。たまに棚卸しして、せめて deny の床だけは敷いておく——それだけで事故の芽はだいぶ減ります。

この記事で扱った権限設計は、受託の現場でClaude Codeを実務運用するための一領域です。任せ方の線引きから環境トラブル、本番反映の作法まで、全体像は「Claude Code実務運用ガイド」にまとめています。

Web制作・改善のご相談は、
初回無料で承っています。

無料で相談する

いきなり相談はちょっと、という方へ

まずは無料で費用感を見積もる

オンライン・お電話・対面(福井近郊)対応/無理な勧誘はいたしません