• Claude Code の –dangerously-skip-permissions とは?危険性と使用禁止にする方法をわかりやすく解説

    AI

    Claude Code の --dangerously-skip-permissions とは?危険性と使用禁止にする方法をわかりやすく解説

    Listen & Subscribe

    はじめに

    Claude Codeは、コードの編集やコマンド実行を支援してくれる強力な開発ツールです。
    ただし、その便利さの裏側で注意したいのが--dangerously-skip-permissionsというオプションです。

    このフラグを使うと、Claude Codeの権限確認を飛ばして実行できるため、開発効率が上がる場面もあります。
    一方で、意図しないファイル変更や危険なコマンド実行まで、確認なしで進んでしまう可能性があるため、チーム開発や業務利用では慎重な運用が必要です。公式ドキュメントでも、このフラグはbypassPermissionsモードと同等と説明されています。

    この記事では、Claude Codeの--dangerously-skip-permissionsの危険性と、実際に使用禁止にする方法を、最新の公式情報に基づいて整理します。

    --dangerously-skip-permissionsとは?

    --dangerously-skip-permissionsは、Claude Codeの権限確認プロンプトをスキップするためのオプションです。
    実質的には--permission-mode bypassPermissionsと同じ扱いです。

    通常のClaude Codeは、ファイル編集やコマンド実行などの重要な操作を行う前に確認を求めます。
    しかしこのフラグを有効にすると、その確認を挟まず処理が進むため、ユーザーが気づかないまま変更が適用されるリスクがあります。

    なぜ危険なのか

    スポンサーリンク

    1. 意図しない操作が止まらない

    権限確認がない状態では、Claude Codeがユーザーの意図を取り違えた場合でも、そのまま操作を実行してしまう可能性があります。
    Anthropicは実例として、リモートGitブランチの削除、GitHub認証トークンのアップロード、プロダクションDB へのマイグレーション実行などを挙げています。

    2. 対話的な開発環境では事故につながりやすい

    ローカル開発環境では、Claude Codeが触れる範囲にソースコードだけでなく、設定ファイル、秘密情報、シェル環境、Git設定なども含まれます。
    そのため、確認を省略した運用は、削除・上書き・設定変更・機密情報アクセス の事故につながりやすくなります。設定ドキュメントでも、permissions.denyを使って .envやsecretsを明示的に保護する運用が案内されています。

    3. 信頼できないリポジトリではさらに危険

    Claude Codeのdevcontainerに関する公式ドキュメントでも、--dangerously-skip-permissionsで実行すると、悪意のあるプロジェクトから認証情報などが漏えいするリスクを防げないと注意喚起されています。

    結論:業務利用では原則禁止が安全

    個人の検証用途を除けば、--dangerously-skip-permissionsは原則禁止 にしたほうが安全です。
    特に次のような環境では、禁止または厳格な制限が現実的です。

    • チーム開発
    • 業務システムの開発
    • 本番系や機密情報に近いリポジトリ
    • CI/CDや運用スクリプトが混在するプロジェクト

    Anthropicも、手動承認と完全スキップの中間としてAuto modeを案内しており、危険な操作だけを検知・抑制する仕組みを強化しています。完全スキップより安全な選択肢として検討できます。

    Claude Code の --dangerously-skip-permissions を使用禁止にする方法

    1. 公式設定で無効化する

    現在のClaude Codeでは、settings.jsondisableBypassPermissionsMode"disable"に設定することで、bypassPermissionsモードの有効化を防げます。
    これは--dangerously-skip-permissionsの無効化にも対応しています。公式ドキュメントでも、組織ポリシーとしてmanaged settingsに置くことが推奨されています。

    例:ユーザー設定または管理設定

    {
      "disableBypassPermissionsMode": "disable"
    }

    設定ファイルの主な場所

    • ユーザー設定: ~/.claude/settings.json
    • プロジェクト設定: .claude/settings.json
    • 個人用ローカル設定: .claude/settings.local.json
    • 管理設定: OS 管理ポリシー、またはシステム配置の managed-settings.json など

    ポイント

    チームや企業で本気で禁止したい場合は、ユーザー任せではなくmanaged settingsで配布するのが最も強い方法です。managed settingsはユーザーやプロジェクト設定で上書きできません。

    2. Hooksで危険な操作を拒否する

    Claude CodeのHooksでは、PreToolUseで操作を検査し、permissionDecision: "deny"を返すことで実行を止められます。
    重要なのは、この denyは bypassPermissions--dangerously-skip-permissionsのときでも有効だという点です。つまり、ユーザーが権限モードを変えても突破しにくいガードになります。

    これは「フラグそのものを禁止する」というより、危険なファイル書き込みやコマンド実行をルールベースで止める方法として有効です。

    たとえば、以下のような制限を設けられます。

    • rm -rf 系コマンドを拒否
    • .env や secrets ディレクトリへのアクセスを拒否
    • 本番 DB 接続コマンドを拒否
    • Git の強制 push や branch 削除を拒否

    3. シェル関数やラッパースクリプトでブロックする

    ローカル環境で簡単に始めるなら、.zshrc.bashrcに関数を定義して、危険なフラグを含む実行を止める方法もあります。

    .zshrc

    export VOLTA_HOME="$HOME/.volta"
    export PATH="$VOLTA_HOME/bin:$PATH"
    
    # Claude Code: --dangerously-skip-permissions を禁止
    claude() {
     if echo "$@" | grep -q "dangerously-skip-permissions"; then
     echo "ERROR: --dangerously-skip-permissions は使用禁止です"
     return 1
     fi
     command claude "$@"
    }

    反映後は以下で読み込みます。

    source ~/.zshrc

    確認方法はこちらです。

    claude --dangerously-skip-permissions

    この方法は手軽ですが、別名コマンドやフルパス実行で回避される可能性があるため、チーム全体の統制にはやや弱めです。個人端末の事故防止策として考えるのがよいでしょう。

    4. CI/CDやリポジトリ検査で検知する

    チーム運用では、GitフックやCIでdangerously-skip-permissionsを検知して失敗させる方法も有効です。

    例:簡易チェック

    #!/bin/bash
    if grep -r "dangerously-skip-permissions" .github/ .gitlab-ci.yml 2>/dev/null; then
     echo "ERROR: dangerously-skip-permissions の使用は禁止されています"
     exit 1
    fi

    これにより、GitHub ActionsやGitLab CIなどの設定に危険フラグが入り込んだ段階で弾けます。
    ただしこれは設定ファイル上の記述検知なので、端末上で直接実行されるケースまでは防げません。

    どの方法が一番おすすめか

    運用レベルごとにおすすめは変わります。

    個人開発

    • .zshrc / .bashrc の関数でブロック
    • 必要に応じてpermissions.denyも設定

    チーム開発

    • disableBypassPermissionsMode: "disable" を設定
    • Hooksで危険操作を拒否
    • CIで設定ファイルを検査

    企業・組織運用

    • managed settingsで強制無効化
    • Hooksとdenyルールの併用
    • ドキュメント化とルール周知

    特に組織では、公式のmanaged settings + Hooksの組み合わせが最も堅実です。

    安全に使うならPlan ModeやAuto modeも候補

    「毎回確認が多くてつらい。でも完全スキップは危険」という場合は、Claude CodeのPlan ModeAuto modeを検討するとよいです。

    Plan Modeは読み取り中心で計画作成に向いた安全寄りのモードで、コードベースを調査して変更方針を立てる用途に向いています。

    Auto modeは、手動確認の代わりに分類器で危険な操作を検知し、危険性の高いものだけ止める仕組みです。Anthropicは「完全なno guardrailsより安全な中間策」として説明しています。

    まとめ

    Claude Codeの--dangerously-skip-permissionsは便利ですが、権限確認を飛ばす以上、誤操作や情報漏えいのリスクが大きい機能です。
    特に業務利用やチーム開発では、安易に許可しないほうが安全です。

    現時点では、使用禁止の方法として次が有効です。

    • 公式設定disableBypassPermissionsMode: "disable"で無効化する
    • Hooksで危険操作をdeny する
    • .zshrcやラッパースクリプトで補助的にブロックする
    • CI/CD やGit フックで混入を検知する

    以前は「完全にブロックする公式設定はない」と言われることもありましたが、現在は公式設定で無効化可能です。
    そのため、これから導入する場合は、まずmanaged settingsかsettings.jsonの見直しから始めるのがおすすめです。

    FAQ

    Q. --dangerously-skip-permissionsは絶対に使ってはいけませんか?

    検証用の一時的な用途ならありえますが、本番に近い環境・チーム開発・機密情報を含む環境では非推奨です。公式も安全な代替として Auto mode を案内しています。

    Q. .zshrcに追記する方法だけで十分ですか?

    個人利用の事故防止には有効ですが、組織的な統制には不十分です。managed settingsやHooksと組み合わせるのが安全です。

    Q. プロジェクト単位で制御できますか?

    はい。.claude/settings.json.claude/settings.local.jsonでプロジェクト単位の設定が可能です。ただし、組織として強制したい場合はmanaged settingsが適しています。