Claude Code の権限設定:.env、Git、危険なコマンドを守る方法
Claude Code の権限を安全に絞る実践ガイド。シークレットを隔離し、Git とシェルの操作を制御してから、本番リポジトリの前に安全境界をテストします。
Claude Code の設定では、開発者は誤った二択に陥りがちです。些細な読み取りコマンドを毎回承認するか、完全なバイパスである --dangerously-skip-permissions を有効にして、.env の漏えい、意図しない git push --force、プロジェクト環境の破損を招くか、という選択です。
どちらの極端も有効ではありません。安全な運用は最小権限の原則に基づき、読み取り、書き込み、シェル実行、バージョン管理を明確に分離します。
1. 権限マップ:読み取りから外部への影響まで
ファイルとコマンドを、次の 4 段階に分けます。
2. .env ファイルとプロジェクトのシークレットを隔離する
Transport Layer Security(TLS)は、ネットワーク上の API トラフィックを暗号化します。しかし、機密の認証情報がモデルのコンテキストウィンドウ、エラーログ、handoff の要約に入ることまでは防げません。
Claude Code に非公開の認証情報を取り込ませないために、次を行います。
- シークレットを含むすべての環境ファイルを
.gitignoreに追加します。 - ダミー値だけを入れた
.env.exampleを用意します。これにより、エージェントは実行時の値を見ずに変数名を理解できます。 CLAUDE.mdまたはAGENTS.mdに、明確な境界ルールを記載します。
シークレット保護ルール
.env、.env.local、秘密鍵ファイルの内容を確認、出力、転送してはならない。- 必要な設定キーは
.env.exampleを確認する。
3. Git とコマンドを制御する優先チェックリスト
Claude Code にタスクを実行させるときは、まず次の順序で評価します。
段階的なガードレール
- 手順 1:Git の変更をゲートする。 手動の
git diff --checkとテスト実行なしに、mainへの自動直接 push を許可しないでください。 - 手順 2:パッケージの導入を隔離する。
npm install <package>やリモートの curl スクリプトは、信頼できない依存関係やサプライチェーンのリスクを避けるため、手動で確認します。 - 手順 3:ディレクトリの範囲を制限する。 エージェントのワークスペースを、特定の機能フォルダまたは専用 Git worktree に制限します。
4. テスト用ワークスペースで権限を検証する
Claude Code に重要なリポジトリへのアクセスを与える前に、サンドボックスで境界を検証します。
- 使い捨てのテストブランチを作成します:
git checkout -b test/permission-check。 - 偽のテスト用シークレットを含むダミーの
.envファイルを追加します。 - 認証モジュールをリファクタリングするようエージェントに依頼します。
- 次を確認します。
- 探索中にエージェントがダミーの
.envを読んでいないこと。 - シークレットトークンがエラーログ、コメント、
git diffに漏れていないこと。 - 許可していないファイルにアクセスせず、ユニットテストが実行できること。
- 探索中にエージェントがダミーの
- 境界を確認できたら、テストブランチを削除します。
このように権限の境界を明確にすると、認証情報を守りながら自律的な実行速度も維持できます。