パーミッションモードとは
前回はパーミッション設定について学びました。今回はパーミッションモードについて説明します。モードは Shift + Tab で切り替えられ、アクセプトエディットモード、プランモード、オートモードなどを順番に切り替えられます。
オートモード(推奨)
オートモードは、基本的にパーミッション設定で制限したもの以外はすべて実行されるモードです。すべての権限を無視して実行する bypassPermissions モードとの違いは、次の2点です。
- 設定したパーミッションをきちんと守る
- Webサーチツールに対して、プロンプトインジェクションを防ぐ分類器が裏で働く
プロンプトインジェクションとは、AIが悪意のあるサイトを閲覧してしまい、そのサイト内に「○○のキーを取ってきて」「○○をこのサイトに送って」といった悪意のある指示が仕込まれている攻撃のことです。オートモードでは、こうした指示を分類器が自動で弾いてくれます。
オートモードはProプラン(月20ドル)でも使えるようになりました。以前は --dangerously-skip-permissions ですべてバイパスしていましたが、危険性があるため、基本的にはオートモードを使うことをおすすめします。
オートモードの設定方法
/config を実行し、デフォルトパーミッションモードの項目で auto を選んで Enter を押し、一度Claude Codeを再起動します。コマンドラインから claude --permission-mode で指定する方法もあります。
その他のモード
- アクセプトエディット ー ファイルの編集などは承諾なしに自動で行いますが、外部のネット検索やファイルの削除などは人間に承認を求めます。パーミッション設定も遵守します
- プランモード ー 計画を立てるモードです
- デフォルト(何も指定しない場合) ー ファイルの編集を含め、基本的にすべての操作で承認を求めてきます
- bypassPermissions ー 権限をすべて無視して実行するモード(
--dangerously-skip-permissions、エイリアス例ccdsp)。危険性があるためおすすめしません
AIの良さは自律的に作業してもらえる点にあるため、基本的にはオートモードがおすすめです。
このモードでどの脆弱性を防げるのか
パーミッション設定は、Claude Codeの実行部分を制限するものです。たとえばClaudeから「.envファイルを覗いてください」という指示が来ても、Claude Code側で .env の Readツールや Bash を実行しない設定にしているため実行されず、環境変数の中身がClaudeに返却されることがなくなります。
Claudeからの「このコマンドを実行して」という指示自体は防ぎようがないため、その実行を Claude Code側で制限する、という形になります。次の動画で紹介する .claudeignore のようなファイルは、そもそもファイルがClaude Codeに認識されない(無視される)設定なので、二重に行っておくと多層防御の一つになります。
注意:プロンプトへの直接貼り付け
気をつけてほしいのが、お願いのプロンプトを投げるときです。プロンプトに直接APIキーなど流出してはいけない情報を貼り付けてしまうと、これは防ぎようがありません。.envファイルを覗きに行くのは防げても、自分でコピー&ペーストしたものはそのまま読まれてしまいます。
開発用のキーであれば、万が一流出しても被害はないので問題ありません。ただし、たとえばStripeを本番環境に移行するときにシークレットキーを貼り付けると、サーバーログに残ってしまうため注意してください。開発環境で貼り付けて開発するのは構いませんが、本番リリース時にはAPIキーをすべて再発行し直すようにするとよいでしょう。
続いては .claudeignore や CLAUDE ファイルについて説明していきます。