前にオートモードを2週間使った話を書きました。そのとき気になった点として挙げたのが「何が走ったのか追いにくい」ことです。
で、そこを解決する方法がちゃんと用意されていました。/permissions の Auto mode タブです。
要するにオートモードって白紙委任じゃなくて、中身を見られる委任状なんですよね。読まずにサインし続ける必要はなかった、という話です。
- いま自分の環境で何が自動承認されているかを一覧で見る方法
- 気になる操作だけをピンポイントで直す手順
- 拒否された操作をあとから振り返る方法
- 許可と拒否が分かれる仕組み(4段の優先順位)
- 設定を確認・点検・リセットするコマンド
今なにが自動承認されているか、答えられますか
オートモードにした瞬間から、Claude Codeの操作は裏側の分類器によって allow / soft_deny / hard_deny のどれかに振り分けられています。
ただ、この判定基準を実際に見たことがある人ってあまりいないと思います。私も最初は見ていませんでした。
「まずいコマンドを勝手に実行されないかな」というモヤっとした不安は、だいたいここから来ます。中身を開いてしまえば、モヤモヤが「これは止めておこう」という具体的な作業に変わります。
/permissions の Auto mode タブを開く
やることは2つだけ。
/permissions
を実行して、Auto mode タブを選ぶ。これだけで分類器のルールが画面で見られますし、その場で直せます。
ただ、条件があります。
| 条件 | 内容 |
|---|---|
| バージョン | Claude Code v2.1.246 以降 |
| セッション | そのセッションでオートモードが利用できること |
手元が古いとタブ自体が出てきません。見当たらないときは、まずバージョンを疑うのが早いです。
開くとこういうのが並びます。
| 見えるもの | 中身 |
|---|---|
allow |
自動承認されるルール |
soft_deny |
ブロックされるが、意図や allow で上書きできるルール |
hard_deny |
無条件でブロックされるルール |
environment |
分類器が「自分の環境」として扱う情報 |
| 組み込みルールの状態 | セクションごとに有効かどうか |
要するに「いま何が通っていて、何が止まっていて、どこを自分の環境だと思っているか」がぜんぶ見えます。まずはここを眺めるところからで十分です。
会社やチームが配布している managed settings 由来のエントリ、--settings フラグで渡された分は、このタブでは読み取り専用として表示されます。見えるけれど勝手には変えられません。個人がうっかり組織のルールを書き換えてしまう心配はない、ということです。
不安な操作だけ個別に直す
一覧を見て「これは勝手に走ってほしくないな」と思ったら、そのままタブで直せます。
| やりたいこと | できること |
|---|---|
| ルールを足す・直す・消す | allow / soft_deny / hard_deny で可能 |
| 組み込みルールをオフにする | セクションに自分のルールが1つ以上あれば可能 |
environment を直す |
エディタで1つの文書としてまとめて編集 |
親切だなと思ったのが "$defaults" の扱いです。あるセクションに初めて自分のルールを足すと、"$defaults" という項目が勝手に入ります。自分のルールを追加したせいで組み込みルールが消える、みたいな事故は起きないようになっています。
組み込みルールのオン・オフも、この "$defaults" があるかないかで記録されます。なのでオフにしたいときは、そのセクションに自分のルールが最低1つ要ります。
environment だけちょっと毛色が違って、まとめて1つの文書として編集します。まだ何も設定していないと「組み込みの環境を置き換えますか」と聞かれて、組み込みの全文が開きます。"$defaults" の行さえ残しておけば組み込みは生きるので、うっかり消さないように。
変更はぜんぶ ~/.claude/settings.json に保存されます。わざわざ別のコマンドを叩く必要はありません。
拒否された操作を振り返る
通ったものだけじゃなく、止められた側も見ておくと状況がつかめます。/permissions の Recently denied タブです。
拒否された操作の上で r を押すと再試行マークが付いて、そのままダイアログを閉じるとClaudeに「やっていいよ」と伝わります。間違って止められたやつは、ここから拾い直せます。
分類器自身が判定を出せなかったとき(安全チェックが分類器の要求を拒否した、応答が解析できなかった、など)は Recently denied に記録されません。操作は止まっているのに一覧には出ない、という状態があり得ます。ここだけを見て「全部把握した」とは考えないほうが安全です。
出てくる理由は、たいてい「Blocked by classifier」という固定の文言です(v2.1.208 以降)。細かい事情までは書かれないので、心当たりから当たりをつけることになります。
なぜ許可と拒否が分かれるのか
一覧を見ていると「なんでこっちは通るのに、こっちは止まるんだ」と思う場面が出てきます。分類器の中では4段階で判定されているからです。
| 順番 | 層 | 上書きできるか |
|---|---|---|
| 1 | hard_deny |
できない。意図も allow も効かない |
| 2 | soft_deny |
意図と allow の例外で上書きできる |
| 3 | allow |
一致する soft_deny を例外として上書き |
| 4 | 明示的なユーザーの意図 | 残った soft block を上書き |
手前で引っかかると、後ろがどれだけゆるくても通りません。
4段目の「明示的な意図」は言葉だけだと分かりにくいので、例で見たほうが早いです。
- 「リポジトリを整理して」→ force push は許可されない(一般的な依頼なので意図とみなされない)
- 「このブランチを force push して」→ 許可される
同じ force push でも、頼み方で扱いが変わるということですね。
設定はどこから読まれるか
分類器が autoMode の設定を読むのは、この3か所です。
| スコープ | ファイル |
|---|---|
| 開発者個人 | ~/.claude/settings.json |
| 組織全体 | managed settings |
| 実行ごとの上書き | --settings フラグ / Agent SDK |
逆に、プロジェクトの中にある .claude/settings.json と .claude/settings.local.json は読みません。リポジトリの中のファイルなので、読んでしまうと、クローンしてきたリポジトリやビルド手順が自前の許可ルールを勝手に紛れ込ませられてしまうからです。言われてみれば確かに、という理由でした。
3か所のエントリは合わさって効きます。自分のルールは足せますが、組織が配ったエントリを消すことはできません。
確認とやり直しのコマンド
いじって壊すのが怖い、というときはこのへんが助けになります。
| コマンド | 用途 |
|---|---|
claude auto-mode defaults |
組み込みの4リストをJSONで表示 |
claude auto-mode config |
自分の設定を適用した実効ルールを表示 |
claude auto-mode critique |
自作ルールへのAIフィードバック |
claude auto-mode reset |
ユーザー設定から autoMode を削除(v2.1.212 以降) |
順番としては、直したら config で結果を見て、critique で粗を拾ってもらって、それでもダメなら reset で戻す、という流れが安心です。
reset は何を消すかを要約してから確認してくれます。--yes を付ければ飛ばせますけど、最初は付けないほうがいいと思います。あと組織配布ぶんと --settings 由来の設定は reset しても残ります。
分類器より前に効く仕組み
Auto mode タブの外側にも、知っておくといい仕組みがあります。
permissions.deny は分類器が呼ばれる前の段階で止めます。分類器の判定もこっちの意図も、ここは上書きできません。絶対に走らせたくないものはこれです。
逆に permissions.ask を使うと、オートモードでも必ず確認が出ます。push と PR作成だけは人が見たい、みたいなときに便利です。
{
"permissions": {
"ask": ["Bash(git push *)", "Bash(gh pr create *)"]
}
}
あと CLAUDE.md の中身は分類器も読んでいます。「never force push」みたいな一文を書いておけば、Claude本体の振る舞いと分類器の判定の両方に効きます。設定ファイルをいじらずに済むので、最初の一歩としてはこれが一番ラクかもしれません。
最初から守られている境界
何も設定していなくても、分類器はもともとこう振る舞います。
| 対象 | 既定の扱い |
|---|---|
| 信頼する範囲 | 作業ディレクトリと、現在のリポジトリの設定済みリモートだけ |
| 作業中リポジトリへの push・PR作成 | 任意のブランチで許可 |
production / release / gh-pages など |
デプロイ先を示すブランチは個別に判断 |
| force push、秘密情報の混入 | ブロックされたまま |
オートモードにしたからといって、ここまで開けっぱなしになるわけじゃないんですね。
まとめ
| やること | 手段 |
|---|---|
| 今の状態を見る | /permissions → Auto mode タブ |
| 気になる操作を止める | タブでルールを編集、または permissions.ask |
| 絶対に止める | permissions.deny(分類器より前に効く) |
| 拒否された操作を振り返る | /permissions → Recently denied タブ |
| 変更を確認する | claude auto-mode config |
| 元に戻す | claude auto-mode reset |
| 必要バージョン | Auto mode タブは v2.1.246 以降 |
オートモードを止める必要はないと思います。ただ、中身を知らないまま使うのと、一回見てから使うのとでは、気持ちの落ち着き方がぜんぜん違いました。
「任せきり」じゃなくて「見て任せる」。まずは一度 Auto mode タブを開いてみてください。
あわせて読みたい
- Claude Codeのオートモードがデフォルトに|変更点と2週間ほど使った感想
- Claude CodeのGitHub連携|コミットからPR作成まで
- コードが苦手なWebデザイナーのためのGit入門|VS Codeで始める使い方
参考
- Configure permissions(Claude Code公式ドキュメント) —
allow/ask/denyの書き方と設定ファイルの場所 - Configure auto mode(Claude Code公式ドキュメント) — Auto mode タブ、分類器の優先順位、
claude auto-modeコマンド
