Codex: Codex パーミッション設定

最終更新:2026-08-31

Codex は強力な操作能力を持っていますが、セキュリティリスクも伴います。このレッスンではパーミッション設定の詳細を説明し、AI の操作があなたの制御下に留まることを確保します。

📋 前提条件: Codex の基本的な設定知識(レッスン6を参照)

1. 学ぶ内容


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 は会話ウィンドウにもすべての操作をリアルタイムで表示します。

📖 まとめ


📝 練習問題

  1. 基本 (⭐):workspace-write サンドボックスモードを設定し、.env ファイルを保護する。
  2. 中級 (⭐⭐):コマンド許可リストを設定する — テストコマンドは自動承認、危険なコマンドは拒否。
  3. 上級 (⭐⭐⭐):エンタープライズグレードのパーミッションスキームを設計する — 異なる役割に異なるパーミッション — パーミッションマトリクスドキュメントを作成する。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%