⚙️

Claude Codeにシステムを破壊されないための権限設定

に公開

2024年後半から急速に進化したClaude Codeは、適切な設定により開発生産性を2-10倍向上させることが実証されています。
実際に開発プロジェクトにおいてコミットの約2/3をClaude Codeが生成し、チーム全体の開発フローを変革している事例もあります。
本記事では、公式ドキュメントと実際の導入事例を基に、効果的な設定方法を解説します。

基本設定の重要ポイント

設定ファイルの適切な構造

Claude Codeの設定は、公式形式では.claude/settings.jsonファイルで管理されます。重要なのは、曖昧な指示ではなく具体的で実行可能な設定を記述することです。

{
  "instructions": "Python開発ではPEP8準拠、行の長さは88文字以内。関数は単一責任原則に従い15行以内を目安とし、日本語コメントで処理内容を明記。エラーハンドリングでは具体的な例外クラスを指定し、ユーザー向けメッセージは日本語で分かりやすく表現する。",
  "permissions": {
    "allow": [
      "Bash(npm run test:*)",
      "Edit(src/**/*.py)",
      "Read(~/Documents/projects/**)"
    ],
    "deny": [
      "Read(./.env)",
      "Bash(curl:*)",
      "Edit(/etc/**)"
    ]
  }
}

権限管理による安全な運用

Claude Codeに破壊的な変更をさせないために権限管理が重要です。
例えば機密ファイルへのアクセス制限、破壊的なコマンドの実行防止、外部アクセスの制御を組み合わせることで、セキュリティを保ちながら効率的な開発が可能になります。

レイヤー1: ファイルアクセス制御

{
  "permissions": {
    "deny": [
      "Read(./.env*)",
      "Read(id_rsa)",
      "Read(id_ed25519)",
      "Read(**/*token*)",
      "Read(**/*key*)",
      "Read(./secrets/**)",
      "Read(~/.ssh/**)",
      "Read(/etc/passwd)",
      "Edit(./config/production.yaml)",
      "Write(./database/migrations/**)"
      "Write(.env*)"
      "Write(**/secrets/**)"
    ]
  }
}

重要な制御ポイント:

  • 機密情報の完全遮断: .envファイル、SSH鍵、本番設定ファイル
  • システムファイル保護: /etc配下、データベーススキーマファイル
  • 段階的許可: 設定ファイルは確認後に編集、ドキュメントは慎重に更新

レイヤー2: コマンド実行制御

{
  "permissions": {
    "allow": [
      "Bash(git status)",
      "Bash(git diff*)",
      "Bash(npm run test*)",
      "Bash(pytest tests/*)",
      "Bash(python -m pytest*)",
      "Bash(docker-compose up --build)"
    ],
    "deny": [
      "Bash(sudo*)",
      "Bash(rm:*)",
      "Bash(rm -rf*)",
      "Bash(git push:*)"
      "Bash(git commit:*)"
      "Bash(git reset:*)"
      "Bash(git rebase:*)"
      "Bash(curl*)",
      "Bash(wget*)",
      "Bash(nc*)",
      "Bash(ssh*)",
      "Bash(scp*)",
      "Bash(docker system prune*)"
      "Bash(npm uninstall:*)"
      "Bash(npm remove:*)"
      "Bash(psql:*)"
      "Bash(mysql:*)"
      "Bash(mongod:*)"
    ],
    "ask": [
      "Bash(git push*)",
      "Bash(npm install*)",
      "Bash(pip install*)",
      "Bash(docker*)"
    ]
  }
}

セキュリティ考慮事項:

  • 破壊的コマンドの禁止: rm -rfsudo、システム削除コマンド
  • 外部通信の制限: curlwgetでのデータ流出防止
  • 重要操作の確認: 本番ブランチへのpush、パッケージインストール

レイヤー3: 外部サービス連携制御

{
  "permissions": {
    "allow": [
      "WebFetch(docs.python.org/*)",
      "WebFetch(github.com/*/releases)",
      "mcp__github__read_issues",
      "mcp__linear__read_tickets"
    ],
    "deny": [
      "WebFetch(*)",
      "mcp__*__write*",
      "mcp__*__delete*",
      "mcp__slack__send_message",
      "mcp__email__*"
      "mcp__supabase__execute__sql"
    ],
    "ask": [
      "WebFetch(stackoverflow.com/*)",
      "mcp__github__create_pr",
      "mcp__linear__update_ticket"
    ],
    "additionalDirectories": [
      "../shared-libraries/",
      "~/Documents/team-templates/"
    ]
  }
}

セキュリティインシデント対応

異常検知と自動対応

{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "command": "if [[ \"$CLAUDE_BASH_COMMAND\" =~ (rm\\ -rf|sudo|curl.*\\|) ]]; then echo 'SECURITY ALERT: Suspicious command blocked' && exit 1; fi"
      }]
    }]
  }
}

緊急時のアクセス無効化

# 緊急時の全権限無効化
echo '{"permissions": {"deny": ["*"]}}' > .claude/emergency-lockdown.json
claude-code --config .claude/emergency-lockdown.json

この3層権限制御により、企業は以下を実現できます:

  1. データ漏洩の防止: 機密ファイルへの完全なアクセス遮断
  2. システム破壊の防止: 危険なコマンドの実行禁止
  3. 不正な外部通信の防止: 承認されていない外部サービスへのアクセス制限
  4. 段階的な権限付与: 職位・経験に応じた適切な権限設定
  5. 完全な監査証跡: すべての操作ログの自動記録

これにより、セキュリティを損なうことなく、Claude Codeの強力な開発支援機能を安全に活用できます。

革新的な新機能の活用

サブエージェント機能

2024年11月に追加されたサブエージェント機能により、専門化されたAI支援が実現できます。.claude/agents/ディレクトリにMarkdownファイルで保存する専門エージェントにより、コードレビュー、セキュリティ監査、パフォーマンス最適化を自動化できます。

---
name: code-reviewer
description: Senior developer focused on code quality and best practices
tools: ["Read", "Grep", "Edit"]
---

レビュー観点:
1. 可読性:6ヶ月後の自分が理解できるか
2. 拡張性:新要件に対して変更箇所が局所的か
3. テスタビリティ:単体テストが書きやすい構造か
4. セキュリティ:入力値検証とエスケープ処理が適切か

hooksシステムによる自動化

開発プロセス全体を自動化するhooks機能により、コード編集時の自動フォーマットやテスト実行が可能になります。

{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Edit|MultiEdit|Write",
      "hooks": [{
        "type": "command",
        "command": "if [[ $CLAUDE_FILE_PATHS =~ \\.py$ ]]; then black $CLAUDE_FILE_PATHS && ruff check --fix $CLAUDE_FILE_PATHS; fi"
      }]
    }]
  }
}

VSCode統合とvibe coding

IDE統合の実践

Claude Code IDE拡張機能をVSCodeに統合することで、Quick Launch(Cmd+Esc)、リアルタイムDiff Viewer、選択範囲の自動共有などの機能を活用できます。

.vscode/settings.jsonでの推奨設定:

{
  "python.defaultInterpreterPath": "./venv/bin/python",
  "python.formatting.provider": "black",
  "python.testing.pytestEnabled": true,
  "terminal.integrated.env.osx": {
    "CLAUDE_CONFIG": ".claude/settings.json"
  }
}

vibe codingでのコーディング

vibe codingを実現するには、Claude Codeが開発者の思考フローを理解し、最適なタイミングで最適なコードを提供できる設定が重要です。

言語別最適化設定

Python環境

現代的なPython開発ではuvパッケージマネージャーとの統合が効果的です。CLAUDE.mdファイルに以下のような指示を記載:

# Python プロジェクト専用設定
- パッケージ管理:uv exclusively
- 依存関係追加:`uv add <package>`
- スクリプト実行:`uv run <script-name>.py`
- PEP8準拠、型ヒント必須、Google形式docstring

JavaScript/TypeScript環境

hooks機能による自動型チェックとフォーマット実行で開発効率を大幅向上:

{
  "hooks": [{
    "matcher": "Edit",
    "hooks": [{
      "type": "command", 
      "command": "if [[ \"$CLAUDE_FILE_PATHS\" =~ \\.(ts|tsx)$ ]]; then npx tsc --noEmit --skipLibCheck \"$CLAUDE_FILE_PATHS\"; fi"
    }]
  }]
}

成功要因と今後の展望

Claude Code導入成功の核心要因は以下の4点です:

  1. 適切な環境整備: 設定ファイルの体系的管理とチーム標準化
  2. 段階的スキルアップ: 個人利用から始まるチーム全体での知見蓄積
  3. セキュリティファースト: 企業ポリシーに適合した権限・監査体制
  4. 継続的改善文化: 定期的な事例共有と最適化レビュー

Claude Codeは単なる開発支援ツールではなく、開発チーム全体の働き方を変革するプラットフォームとして急速に進化しています。

基本設定から始めて、実践での学び、チーム議論、段階的改善、定期見直しのサイクルを回すことで、あなたのプロジェクトに最適化された設定を構築してください。

Discussion