許可プロンプトの判断基準
「一度だけ許可」と「常に許可」、どちらを選ぶか
度々許可を求められる際に、「一度だけ許可」と「常に許可」の2つの選択肢がある場合があるんだけど、これって常に許可にしてても問題ない?
結論
ケースバイケース。デフォルトは「一度だけ許可」、特定のカテゴリだけ「常に許可」に切り替える、が安全な運用。
「常に許可」してOKなコマンド
繰り返し実行する 読み取り系・既知の安全な操作:
Always Allow
git status、git log、git diffなどのGit読み取りls、cat、pwdなどのファイル/ディレクトリ参照pnpm dev、pnpm build、pnpm test、pnpm lintなどの定型ビルド/テストpnpm tsc --noEmitなどの型チェック- プロジェクト内ファイルへの定型書き込み(
src/配下への編集など)
これらは何回呼ばれても挙動が予測可能で、毎回確認すると煩雑になるだけ。
「一度だけ許可」のままにすべきコマンド
Allow Once
rm、rm -rfなどの削除系git push --force、git reset --hardなどの破壊的Git操作npm install -g、brew installなどのグローバル変更curl、wgetで外部URLを叩く操作(特に未知のドメイン)- データベースの
DROP、TRUNCATE - プロジェクト外のディレクトリへの書き込み(
~/Documents/などへの書き込み) - 初めて見るコマンド、パラメータが複雑なもの
これらはミス1回で取り返しがつかないので、毎回確認する価値がある。
個別ケース: shadcn@latest init
これは 初期セットアップ用の一回限りのコマンド。「常に許可」にする意味がない(次回呼ばれないから)ので、「一度だけ許可」で十分。
なぜリスクがあるのか
「常に許可」には2つの落とし穴がある:
Claude の判断ミス
Claude も間違える。常に許可だとミスが素通りする。確認画面はそのミスを止める最後の機会。
プロンプトインジェクション
外部から取り込んだファイル(npmパッケージのREADMEやウェブで取得した情報)に悪意ある指示が埋め込まれていた場合、Claude がそれを実行しようとしうる。確認画面が最後の防波堤になる。
業務系の重要案件にも Claude Code を使う可能性があるなら、「考えずに常に許可」のクセは付けない方がいい。コマンドを見て「これは何度も繰り返すやつだ」と判断したものだけ「常に許可」に切り替える、というプロセスが習慣化すると安全。
実践的な目安
| 状況 | 選択 |
|---|---|
pnpm dev、pnpm build、git status 系を3回目に見た |
常に許可 |
| ファイル編集の確認(毎回出る場合) | 常に許可 |
| 一回限りのセットアップコマンド | 一度だけ許可 |
rm、reset、外部API叩き、未知コマンド |
一度だけ許可 (または拒否してから精査) |
⁕ ⁕ ⁕
迷ったら「一度だけ許可」。後で「常に許可」に切り替えるオプションは Settings → Claude Code から見直せる。