4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeの権限モードを改めて確認してみました。

4
Posted at

Claude Codeの権限モードを改めて確認してみました。ほぼ公式ドキュメントの情報です。

権限モードの種類

こんだけあります。

モード名 CLIでの表示 Desktopアプリでの表示 備考
default manual mode 手動
acceptEdits accept edits 編集を受け入れる
plan plan mode プラン
auto auto mode 自動 利用条件あり
bypassPermissions bypass permissions 権限をバイパス 設定により有効化が必要
dontAsk don't ask ― CLIで--permission-mode dontAskを明示的に指定した場合のみ

作業ディレクトリ

Claude Codeには作業ディレクトリの考え方があり、基本的にはclaudeを起動したディレクトリが作業ディレクトリになります。--add-dirオプションや、スラッシュコマンドの/add-dirを使って別のディレクトリを追加することもできます。

Claude Codeは作業ディレクトリ内のファイルは基本的に触れるのですが、.git, .claude, .vscodeなどは、「保護パス(Protected paths)」として特別扱いされます。

権限モードの整理

defaultモード

ユーザーの許可無しで作業ディレクトリのファイルは読める。作業ディレクトリの書き込みや作業ディレクトリ以外の場所のアクセスには許可を求める。Web検索なども許可が必要。

acceptEditsモード

作業ディレクトリのファイルについては読み取りだけでなく書き込みも行える。ただし、保護パスは例外。作業ディレクトリ外の場所は読み取りも書き込みも許可を求める。

Bashツールで自動で実行されるのは以下のもののみ。(それ以外は許可を求められる)

mkdir, touch, rm, rmdir, mv, cp, and sed

planモード

計画を行うモード。権限としてはdefault相当ですが、そもそも書き込みをしようとしない制御が入っている気がします。

autoモード

acceptEditsモードの動作を基準(作業ディレクトリに書き込める)にしたうえで、ツールを実行していいかを、「classifier」と呼ばれる別モデルが判断。実行していいと判断されてば、作業ディレクトリ外への読み書きや任意のコマンドも実行されるかもしれない。

許可を求める回数は減るものの、「安全は保証しないよ」との注意書きがあるので利用は自己責任で。

bypassPermissionsモード

権限チェックを行わないモードで、基本的にすべてのツールが許可無しで実行されます。rm -rf /のようなものの場合には確認が出ることもあるようですが、そもそもこんなコマンドを実行したいことはあるのかな?

dontAskモード

dontAskは、対話型ではなく、プログラム的に自動実行させる際に使うモードのようです。自動実行中なのでユーザーが許可を出すことができないので、許可が必要な状況になったら自動で「許可しない」動作をします。

まとめ

使ってる感覚ではautoモードで明らかな変なことをされた経験はないですが、作業ディレクトリ以外のファイルも操作可能ということは、改めて頭の片隅に入れておく必要がありますね。

また、保護パスの話は知りませんでした。Claude Codeの設定を変えさせようとしたらいつもと動きが違うな?と思ってたんですが、これの影響だったんですね。(Claude Code出たばかりの頃は「.git消された!」みたいなのがよくあった気がするのですが、いつの間にかブロックされているようでした。)

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?