Codex: Codex パーミッション設定
最終更新:2026-08-31
Codex は強力な操作能力を持っていますが、セキュリティリスクも伴います。このレッスンではパーミッション設定の詳細を説明し、AI の操作があなたの制御下に留まることを確保します。
📋 前提条件: Codex の基本的な設定知識(レッスン6を参照)
1. 学ぶ内容
- パーミッションモデルの階層
- 3つのサンドボックスモードの詳細
- 承認ポリシーの設定
- 機密操作の保護
2. パーミッションモデル
(1) 操作パーミッションの階層
| パーミッションレベル | スコープ | デフォルトの動作 |
|---|---|---|
| Read | プロジェクトファイルの読み取り | 自動許可 |
| Write | プロジェクトファイルの変更/作成 | 確認が必要(設定可能) |
| Execute | シェルコマンドの実行 | 確認が必要 |
| Network | パッケージのインストール、API アクセス | 確認が必要 |
| System | 機密ディレクトリへのアクセス | 確認が必要 |
(2) リスクレベル
| レベル | 操作例 | 保護 |
|---|---|---|
| 🟢 低 | ソースコードファイルの読み取り | 自動許可 |
| 🟡 中 | ソースコードファイルの変更 | 確認が必要 |
| 🟠 高 | シェルコマンドの実行 | 確認 + コマンドの表示 |
| 🔴 重要 | ファイルの削除、キーへのアクセス | 確認 + 追加の警告 |
3. サンドボックスモードの詳細
(1) Read-only
BASH
codex --sandbox readonly
| 能力 | ステータス |
|---|---|
| ファイルの読み取り | ✅ |
| ファイルの変更 | ❌ |
| コマンドの実行 | ❌ |
| ネットワークアクセス | ❌ |
用途:コードレビュー、アーキテクチャ分析、ドキュメント生成
(2) Workspace-write
BASH
codex --sandbox workspace-write
| 能力 | ステータス |
|---|---|
| ファイルの読み取り | ✅ |
| ワークスペースファイルの変更 | ✅ |
| コマンドの実行 | ⚠️ 確認が必要 |
| ネットワークアクセス | ❌ |
用途:日常開発(デフォルトモード)
(3) Full-access
BASH
codex --sandbox full-access
| 能力 | ステータス |
|---|---|
| ファイルの読み取り | ✅ |
| 任意のファイルの変更 | ✅ |
| コマンドの実行 | ✅ |
| ネットワークアクセス | ✅ |
用途:完全に信頼された自動化シナリオ(注意して使用)
▶ 例1:Alice がシナリオ別にモードを選択
PYTHON
def choose_sandbox(task_type):
modes = {
"code_review": "readonly",
"daily_dev": "workspace-write",
"full_migrate": "full-access",
}
return modes.get(task_type, "workspace-write")
# Alice の今日の作業
print(choose_sandbox("code_review")) # readonly
print(choose_sandbox("daily_dev")) # workspace-write
print(choose_sandbox("full_migrate")) # full-access
4. 承認ポリシー
(1) 3つのポリシー
| ポリシー | 動作 | リスク |
|---|---|---|
ask |
毎回ユーザーに確認 | 最も安全 |
approve |
自動承認 | 中程度のリスク |
deny |
自動拒否 | 最も保守的 |
(2) 操作タイプごとの設定
TOML
# ~/.codex/config.toml
[approval]
# シェルコマンドの承認
shell_commands = "ask"
# ファイル書き込みの承認
file_writes = "ask"
# ネットワークアクセスの承認
network_access = "deny"
# 機密パスの承認
sensitive_paths = "ask"
(3) コマンド許可リスト
TOML
[approval]
shell_commands = "ask"
# 自動承認する安全なコマンド
auto_approve_commands = [
"git status",
"git diff",
"npm test",
"pytest",
"ls",
"cat",
]
# 常に拒否する危険なコマンド
always_deny_commands = [
"rm -rf",
"sudo",
"chmod 777",
"curl * | sh",
]
5. 機密パスの保護
(1) デフォルトの保護パス
TEXT
📖 参照専用
~/.ssh/
~/.gnupg/
/etc/
.env
.env.*
secrets/
credentials/
*.key
*.pem
(2) カスタム保護パス
TOML
[sandbox]
blocked_paths = [
".env",
".env.production",
"secrets/",
"credentials/",
"config/production.yml",
"*.key",
"*.pem",
]
▶ 例2:Bob が本番設定を保護
TOML
# Bob のプロジェクトサンドボックス設定
[sandbox]
mode = "workspace-write"
allowed_paths = ["src/", "tests/", "docs/"]
blocked_paths = [
".env.production",
"config/prod/",
"secrets/",
"deploy/",
]
6. パーミッション監査
(1) 操作ログの表示
BASH
# 現在のセッションのすべての操作を表示
codex --audit-log
# 出力例
[10:30:15] READ src/auth.ts (auto-approved)
[10:30:18] WRITE src/auth.ts (approved by user)
[10:30:22] SHELL npm test (approved by user)
[10:30:25] WRITE test/auth.test.ts (approved by user)
(2) 監査設定
TOML
[audit]
log_all_operations = true
log_file = "~/.codex/audit.log"
include_shell_output = true
7. ベストプラクティス
| プラクティス | 説明 |
|---|---|
| デフォルトは ask ポリシー | 安易に approve に切り替えない |
| サンドボックスのスコープを制限 | 必要なパスのみ開放 |
| 重要ファイルを保護 | .env とキーを blocked_paths に追加 |
| 定期的にログをレビュー | Codex が何を実行したかを確認 |
| Git をセーフティネットに | Codex に変更させる前にコミット — ロールバックが容易 |
| CI では deny を使用 | 継続的インテグレーションですべての書き込み操作を拒否 |
❓ よくある質問
Q Full-access モードのリスクは何ですか?
A Codex は任意のコマンドを実行し、任意のファイルを変更し、ネットワークにアクセスできます。Codex が誤判断した場合、重要なファイルを削除したり危険なコマンドを実行する可能性があります。完全に信頼されたシナリオでのみ使用してください。
Q 実行時に承認ポリシーを切り替えられますか?
A はい。Codex セッション中に
/mode でモードを切り替えるか、「今後はすべての操作に私の確認が必要」と Codex に伝えます。Q Codex が .env ファイルにアクセスするのを防ぐにはどうすればよいですか?
A 設定の blocked_paths に
.env と .env.* を追加し、workspace-write モードを使用します。Q Codex は密かにコマンドを実行しますか?
A ask モードではありません — すべての機密操作は事前に確認が必要です。ただし、approve または Full Auto モードでは、Codex は自動実行します。
Q Codex が何をしたかを知るにはどうすればよいですか?
A 監査ログを有効にするか、
git diff でコード変更を確認します。Codex は会話ウィンドウにもすべての操作をリアルタイムで表示します。📖 まとめ
- パーミッション階層:Read → Write → Execute → Network → System
- 3つのサンドボックスモード:readonly / workspace-write / full-access
- 承認ポリシー:ask(安全)/ approve(自動)/ deny(保守的)
- 機密パスの保護:.env、キー、本番設定
- ベストプラクティス:デフォルト ask + Git セーフティネット + 監査ログ
📝 練習問題
- 基本 (⭐):workspace-write サンドボックスモードを設定し、.env ファイルを保護する。
- 中級 (⭐⭐):コマンド許可リストを設定する — テストコマンドは自動承認、危険なコマンドは拒否。
- 上級 (⭐⭐⭐):エンタープライズグレードのパーミッションスキームを設計する — 異なる役割に異なるパーミッション — パーミッションマトリクスドキュメントを作成する。