特定の操作だけ許可・禁止する手順
この記事には変動しやすい情報が含まれます(確認日: )
結論
「毎回聞かれるのは面倒、でも危ない操作は絶対に止めたい」。この2つは両立できます。許可のルールを使うと、安全な操作は確認なしで通し、危ない操作だけを名指しで禁止できます。設定は/permissionsから。モードが土台なら、ルールはその上に重ねる細かい線引きです。
ルールは3つ
ルールの種類は次のとおりです。
- Allow(許可) … その道具を、手動の承認なしで使わせます
- Ask(確認) … その道具を使おうとするたびに確認を求めます
- Deny(禁止) … その道具を使わせません
大事なのは評価される順番です。禁止 → 確認 → 許可の順に見て、最初に一致したものが結果を決めます。ルールの細かさは順番を変えません。
つまり、広い禁止ルールを1つ書くと、より細かい許可ルールがあっても止まります。Bash(aws *)という禁止があれば、Bash(aws s3 ls)という許可があっても実行されません。禁止に例外は作れないという設計です。
道具ごと消すか、一部を止めるか
書き方によって効き方が変わります。道具の名前だけを書いた禁止ルールは、その道具をClaudeの手元から丸ごと取り上げます。Claudeはその道具の存在を知りません。
一方、Bash(rm *)のように範囲を絞った書き方では、道具自体は使えるまま、一致する呼び出しだけが止まります。「シェルは使わせるが、削除だけはさせない」といった線引きはこちらです。
前提条件
- Claude Codeが動く状態であること
- ルールは
settings.jsonに保存されます。どのファイル由来のルールかは/permissionsの画面で確認できます - ルールを効かせたい範囲(自分だけか、プロジェクト全体か)を決めておくこと
手順
- Claude Codeで
/permissionsと入力します - いま効いているルールの一覧と、それぞれの出どころのファイルを確認します
- 止めたい操作を、禁止のルールとして追加します。範囲を絞るなら
Bash(rm *)のような書き方です - 毎回聞かれたくない安全な操作は、許可のルールとして追加します
- 追加後にもう一度
/permissionsを開き、順番と内容を確かめます
検証の考え方
実際に試すのが確実です。禁止したはずの操作をClaudeに頼んでみて、止まれば効いています。
意図せず止まる場合は、広い禁止ルールが原因かもしれません。禁止・確認・許可の順で最初に一致したものが勝つため、細かい許可を書いても広い禁止には勝てません。/permissionsで一覧を見返し、範囲の広すぎるルールを探してください。
限界と注意
ルールを守らせているのはClaude Codeであり、モデルではありません。 プロンプトやCLAUDE.mdに「これはやらないで」と書くことは、Claudeが何をしようとするかに影響しますが、Claude Codeが何を許すかは変えません。確実に止めたいものは、指示ではなくルールで止めてください。
逆に言えば、ルールで許可した操作は、指示の書き方に関係なく通ります。許可を広げるときは、その道具で何ができるかを考えてから決めてください。
学習上の注意
最初から完璧なルールを作ろうとしないでください。使いながら「これは毎回聞かれなくてよい」「これは絶対に止めたい」が見えてきます。そのつど足す進め方で十分です。
ルールが増えてきたら、/permissionsでときどき棚卸しをしてください。昔の作業のために広げた許可が、そのまま残っていることがあります。
出典・参考
- C: 一次発表 Permissions(許可のルール)
- C: 一次発表 Choose a permission mode(許可モード)