権限設定のベストプラクティス
Claude Codeの権限モデル
Section titled “Claude Codeの権限モデル”Claude Codeはデフォルトで、起動したディレクトリ以下のファイルを読み書きできます。
デフォルトでできること:
- カレントディレクトリ以下のファイルの読み書き
- シェルコマンドの実行(許可した場合)
- ネットワークアクセス(MCPサーバー経由)
デフォルトでできないこと:
- 親ディレクトリへのアクセス
- システムファイルの変更
※MCP: Model Context Protocol の略。Claude Codeと外部ツール(GitHub・Supabaseなど)を接続するための標準プロトコル。
権限の絞り方
Section titled “権限の絞り方”特定のディレクトリのみ許可する
Section titled “特定のディレクトリのみ許可する”プロジェクトのサブディレクトリでのみ作業させたい場合、そのディレクトリで起動する:
cd src/features/user-authclaudeこうするとClaude Codeは src/features/user-auth/ 以下のみを操作する。
自動承認を慎重に使う
Section titled “自動承認を慎重に使う”settings.json の autoApprove は、デフォルトで false にしておく:
{ "autoApprove": false}true にすると全ての操作が確認なしで実行される。本番環境に近い環境では特に注意。
MCP権限の最小化
Section titled “MCP権限の最小化”MCPサーバーには必要最小限の権限だけを与える。
DBアクセスの例(Supabase)
Section titled “DBアクセスの例(Supabase)”{ "mcpServers": { "supabase-readonly": { "command": "npx", "args": [ "@supabase/mcp-server-supabase", "--url", "https://xxx.supabase.co", "--key", "anon-key-not-service-role" // anonキーで読み取りのみ ] } }}本番DBへの書き込みが不要な場面では、anon キー(RLSで制限される)を使う。
GitHubの例
Section titled “GitHubの例”必要なスコープだけを選ぶ:
- コードを読むだけ →
read:repo - PRにコメントするだけ →
public_repoの最小限 - リポジトリ全体の管理は不要なら
repoスコープは避ける
※リポジトリ: Gitでコードと変更履歴を管理するフォルダ。GitHubなどのサービスで共有できる。
本番環境での注意事項
Section titled “本番環境での注意事項”本番DBに接続するMCPサーバーを設定するときの原則:
- 別の設定ファイルを使う:
settings.production.jsonに分けて、普段は使わない - 読み取り専用ユーザーを作る: 本番DBに書き込みできないユーザーのキーを使う
- 使用後は無効化する: MCPサーバーの設定を削除してから不要になったら
バージョン管理での注意
Section titled “バージョン管理での注意”# .gitignore に追加(シークレットを含む可能性がある).claude/settings.local.json*.envチームで共有する settings.json には、シークレットを直接書かない。環境変数で渡す。
※環境変数: APIキーやデータベース接続情報など、コードに直接書きたくない値をOSやサーバーに設定する仕組み。