openai/codex
主な特徴
- **ローカル実行**: クラウドではなくユーザーのマシン上で完全に動作
- **サンドボックス環境**: 読み取り専用モード、ワークスペース書き込みモードなど、段階的な権限設定
- **複数の認証方法**: ChatGPT Plus/Pro/Teamアカウント、またはOpenAI APIキーで利用可能
- **インタラクティブモード**: TUI(ターミナルUI)での対話的な使用
- **非インタラクティブモード**: CI/CDパイプラインでの自動実行
- **オープンソースモデル対応**: OllamaなどのローカルLLMも利用可能
- **MCP対応**: Model Context Protocolサーバーの統合
- **メモリ機能**: AGENTS.mdファイルによるプロジェクト固有の指示を設定可能
リポジトリ解析: openai/codex
基本情報
- リポジトリ名: openai/codex
- 主要言語: Rust
- スター数: GitHub Trendingにランクイン
- フォーク数: 実装コードでは取得不可
- 最終更新: アクティブに開発中(v0.20.0+)
- ライセンス: Apache License 2.0
- トピックス: AI, CLI, コーディングアシスタント, ターミナル, LLM, Rust, TypeScript
概要
一言で言うと
Codex CLIは、OpenAIが開発したローカルで動作する軽量なコーディングアシスタントで、ターミナル上で自然言語で指示を与えることで、コードの書き換え、テストの実行、ファイルの操作などを自動的に実行します。
詳細説明
Codex CLIは、開発者の日常的なコーディングタスクを支援するAIエージェントです。ターミナルでコマンドを実行し、ファイルを編集し、テストを書いて実行し、コードをリファクタリングするなど、多様な開発タスクを自動化できます。
クラウドベースのCodex Webとは異なり、このCLIツールはユーザーのローカルマシン上で完全に動作します。セキュリティを重視し、サンドボックス環境でコマンドを実行することで、意図しない変更や危険な操作からユーザーを保護します。
主な特徴
- ローカル実行: クラウドではなくユーザーのマシン上で完全に動作
- サンドボックス環境: 読み取り専用モード、ワークスペース書き込みモードなど、段階的な権限設定
- 複数の認証方法: ChatGPT Plus/Pro/Teamアカウント、またはOpenAI APIキーで利用可能
- インタラクティブモード: TUI(ターミナルUI)での対話的な使用
- 非インタラクティブモード: CI/CDパイプラインでの自動実行
- オープンソースモデル対応: OllamaなどのローカルLLMも利用可能
- MCP対応: Model Context Protocolサーバーの統合
- メモリ機能: AGENTS.mdファイルによるプロジェクト固有の指示を設定可能
使用方法
インストール
前提条件
- OS: macOS 12+、Ubuntu 20.04+/Debian 10+、Windows 11 (WSL2経由)
- Node.js: 20+(npmインストールの場合)
- Git: 2.23+ (オプション、PRヘルパー機能用)
- RAM: 最小4GB(推奐8GB)
インストール手順
# 方法1: npm経由(推奨)
npm install -g @openai/codex
# 方法2: Homebrew経由(macOS/Linux)
brew install codex
# 方法3: GitHub Releaseからバイナリをダウンロード
# macOS Apple Silicon: codex-aarch64-apple-darwin.tar.gz
# macOS x86_64: codex-x86_64-apple-darwin.tar.gz
# Linux x86_64: codex-x86_64-unknown-linux-musl.tar.gz
# Linux arm64: codex-aarch64-unknown-linux-musl.tar.gz
# 方法4: ソースからビルド
git clone https://github.com/openai/codex.git
cd codex/codex-rs
cargo build --release
基本的な使い方
Hello World相当の例
# インタラクティブモードで起動
codex
# プロンプトを指定して起動
codex "explain this codebase to me"
# 非インタラクティブモードで実行
codex exec "write unit tests for utils/date.ts"
実践的な使用例
# ReactコンポーネントをHooksにリファクタリング
codex "Refactor the Dashboard component to React Hooks"
# SQLマイグレーションの生成
codex "Generate SQL migrations for adding a users table"
# セキュリティレビュー
codex "Look for vulnerabilities and create a security review report"
# 一括ファイル名変更
codex "Bulk-rename *.jpeg -> *.jpg with git mv"
高度な使い方
# ChatGPTアカウントでログイン
codex login # ブラウザが開き、ChatGPTアカウントで認証
# APIキーを使用
export OPENAI_API_KEY="your-api-key-here"
codex
# サンドボックスモードの指定
codex --sandbox workspace-write --ask-for-approval on-request
codex --sandbox read-only --ask-for-approval on-request
codex --sandbox danger-full-access --ask-for-approval never
# オープンソースモデルの使用
codex --oss # Ollamaのデフォルトモデルを使用
codex --oss -m "gpt-oss:120b" # 大規模モデルを指定
# CI/CDでの使用
codex exec --full-auto "update CHANGELOG for next release"
ドキュメント・リソース
公式ドキュメント
- README.md: プロジェクトの包括的な概要、インストール方法、使用例
- codex-rs/config.md: 詳細な設定オプションのドキュメント
- docs/protocol_v1.md: 通信プロトコルの仕様
- AGENTS.md: プロジェクト固有の指示やメモリ設定の例
- CONTRIBUTING.md: コントリビューションガイドライン
サンプル・デモ
- README内の使用例: 7つの具体的なユースケースを提供
- React Hooksへのリファクタリング
- SQLマイグレーション生成
- ユニットテスト作成
- ファイル名一括変更
- 正規表現の説明
- PR提案
- セキュリティレビュー
チュートリアル・ガイド
- GitHub Issueでのサポート
- プロンプティングガイド(別途提供予定)
- config.tomlの設定例
- CI/CD統合の例(GitHub Actions)
技術的詳細
アーキテクチャ
全体構造
Codexは、Rustで書かれたコアエンジンとnpmパッケージとして配布されるクライアントから構成されます。コア機能はRustで実装され、高速で安全な実行を実現しています。
- クライアント・サーバーアーキテクチャ: OpenAI APIまたはローカルLLMと通信
- サンドボックス: OS固有のサンドボックス機能を使用(macOS: Seatbelt、Linux: Landlock/seccomp)
- イベントストリーム: SSE(Server-Sent Events)を使用したリアルタイム通信
- MCP統合: Model Context Protocolサーバーとの連携
ディレクトリ構成
codex/
├── codex-cli/ # npmパッケージとCLIエントリポイント
│ ├── bin/ # 実行可能スクリプト
│ └── scripts/ # ビルド/リリーススクリプト
├── codex-rs/ # Rustコードベース
│ ├── core/ # コア機能(クライアント、実行、設定)
│ ├── cli/ # CLIインターフェース
│ ├── tui/ # ターミナルUI
│ ├── exec/ # コマンド実行エンジン
│ ├── execpolicy/ # 実行ポリシーとサンドボックス
│ ├── mcp-* # MCP関連モジュール
│ ├── ollama/ # Ollama統合
│ └── apply-patch/ # パッチ適用機能
└── docs/ # プロジェクトドキュメント
主要コンポーネント
-
codex-core: コアロジックとAPIクライアント
- 場所:
codex-rs/core/ - 依存: tokio, reqwest, serde
- 機能: LLM通信、コマンド実行、設定管理
- 場所:
-
codex-tui: ターミナルUI
- 場所:
codex-rs/tui/ - 依存: ratatui(TUIフレームワーク)
- 機能: インタラクティブなチャットインターフェース
- 場所:
-
execpolicy: 実行ポリシーエンジン
- 場所:
codex-rs/execpolicy/ - 依存: OS固有のサンドボックスAPI
- 機能: コマンドの安全性検証、実行制限
- 場所:
-
mcp-server/client: MCPプロトコル実装
- 場所:
codex-rs/mcp-server/,codex-rs/mcp-client/ - 機能: 外部ツールとの統合
- 場所:
技術スタック
コア技術
- 言語:
- Rust (Edition 2024): コアエンジン、CLI、TUI
- JavaScript/Node.js: npmパッケージラッパー
- フレームワーク:
- Tokio: 非同期ランタイム
- Ratatui: ターミナルUIフレームワーク
- 主要ライブラリ:
- reqwest (0.12): HTTPクライアント(OpenAI API通信)
- serde/serde_json (1.0): JSONシリアライズ
- eventsource-stream (0.2.3): SSEクライアント
- clap (4.5): CLI引数パーサー
- toml (0.9): 設定ファイルパーサー
- landlock (0.4): Linuxサンドボックス
- seccompiler (0.5): Linux seccompフィルタ
開発・運用ツール
- ビルドツール:
- Cargo: Rustプロジェクト管理
- Just: タスクランナー
- pnpm: JavaScriptパッケージ管理
- テスト:
- cargo test: 単体テスト、統合テスト
- wiremock: HTTPモックテスト
- assert_cmd: CLIテスト
- CI/CD:
- GitHub Actions: 自動テスト、ビルド、リリース
- クロスプラットフォームビルド(Linux/macOS/Windows)
- デプロイ:
- npmレジストリ: @openai/codex
- Homebrew: codexフォーミュラ
- GitHub Releases: バイナリ配布
設計パターン・手法
- コマンドパターン: CLI引数の解析と実行
- アクターモデル: 非同期メッセージパッシング
- ポリシーパターン: サンドボックスポリシーの実装
- ストリーム処理: SSEを使用したリアルタイム通信
- プロファイルパターン: 設定の階層管理(CLI > config.toml > デフォルト)
- プラグインアーキテクチャ: MCPサーバーの動的読み込み
データフロー・処理フロー
- ユーザー入力: TUIまたはCLI引数からプロンプトを受け取る
- プロンプト構築: コンテキスト(ファイル内容、AGENTS.md等)を追加
- APIリクエスト: OpenAI APIまたはローカルLLMに送信
- ストリーム処理: SSEでレスポンスを受信
- ツール呼び出し解析: LLMが要求するアクションを抽出
- ポリシーチェック: サンドボックスポリシーに基づく検証
- 承認フロー: 必要に応じてユーザー承認を要求
- コマンド実行: サンドボックス内で安全に実行
- 結果フィードバック: 実行結果をLLMにフィードバック
- 繰り返し: タスク完了まで繰り返し
API・インターフェース
公開API
CLIコマンド
- 目的: コマンドラインからCodexを操作
- 使用例:
# インタラクティブモード
codex [--model MODEL] [--sandbox SANDBOX] [--ask-for-approval APPROVAL]
# プロンプト付き起動
codex "your prompt here"
# 非インタラクティブ実行
codex exec "your task"
# ログイン
codex login
# MCPサーバーモード
codex mcp
設定・カスタマイズ
設定ファイル
# ~/.codex/config.toml
# モデル設定
model = "o3"
model_provider = "openai"
# サンドボックス設定
approval_policy = "on-request"
sandbox_mode = "workspace-write"
# プロファイル
[profiles.readonly]
approval_policy = "never"
sandbox_mode = "read-only"
# モデルプロバイダー
[model_providers.ollama]
name = "Ollama"
base_url = "http://localhost:11434/v1"
# MCPサーバー
[mcp_servers.my-server]
command = "npx"
args = ["-y", "mcp-server"]
env = { "API_KEY" = "value" }
拡張・プラグイン開発
- カスタムモデルプロバイダー: config.tomlで任意のOpenAI互換APIを設定可能
- MCPサーバー: 外部ツールをMCPプロトコルで統合
- AGENTS.md: プロジェクト固有の指示やコンテキストを追加
パフォーマンス・スケーラビリティ
パフォーマンス特性
- 起動速度: Rustバイナリによる高速起動
- メモリ使用量: 軽量なフットプリント
- ストリーミング処理: SSEによるリアルタイムレスポンス
- 並行処理: Tokioによる非同期I/O
スケーラビリティ
- 複数タスクの同時実行: 非インタラクティブモードでのバッチ処理
- CI/CD統合: GitHub Actionsや他のCIシステムでの大規模実行
- ローカルLLM対応: ネットワーク依存を減らしてスケール
制限事項
- 技術的な制限:
- Windowsネイティブ未対応(WSL2経由のみ)
- Docker環境でのサンドボックス制限
- ヘッドレス環境でのログインの複雑さ
- 運用上の制限:
- 実験的技術であり、破壊的変更の可能性
- 現在アクティブに開発中(バグや不完全な機能あり)
評価・所感
技術的評価
強み
- 優れたセキュリティモデル: サンドボックスによる安全な実行環境
- 柔軟な認証オプション: ChatGPTアカウント、APIキー、ローカルLLMに対応
- 高品質なRust実装: 型安全性、メモリ安全性、高速性
- ユーザーフレンドリーUI: TUIによる直感的な操作
- オープンソース: Apache 2.0ライセンスでコミュニティ駆動開発
- 統合性: MCPサポートによる拡張性
改善の余地
- Windowsネイティブ未対応: WSL2が必須
- 実験的プロジェクト: APIや機能が頻繁に変更
- ドキュメント不足: 詳細なAPIドキュメントが未整備
- ヘッドレス環境での認証: 複雑な回避策が必要
向いている用途
- 日常的なコーディングタスク: リファクタリング、テスト作成、バグ修正
- CI/CDパイプライン: 自動化されたコード品質チェック
- ローカル開発: クラウドに依存しないセキュアな環境
- 学習・探索: コードベースの理解、新しい技術の学習
- バッチ処理: 大量のファイルに対する一括操作
向いていない用途
- プロダクションクリティカル: 実験的技術のため
- Windowsネイティブ開発: WSL2のオーバーヘッド
- GUIアプリケーション開発: ターミナルベースのツール
- リアルタイムペアプログラミング: 非同期処理モデル
総評
Codex CLIは、AI時代の開発者ツールとして非常に注目すべきプロジェクトです。OpenAIが開発していることで、最新のLLMへのアクセスと高品質な実装が保証されています。
特に優れているのは、セキュリティへの配慮です。サンドボックス機能により、AIが生成したコマンドを安全に実行でき、意図しない変更や危険な操作からユーザーを保護します。これは他の多くのAIコーディングツールにはない特徴です。
また、ローカル実行という点も重要です。コードやデータがクラウドに送信されることなく、完全にローカルで処理されるため、機密情報を扱うプロジェクトでも安心して使用できます。
ただし、現在は実験的プロジェクトであることに注意が必要です。APIや機能が頻繁に変更される可能性があり、プロダクション環境での使用には慎重な検討が必要です。
Rustによる高品質な実装、優れたUI/UX、強力なセキュリティ機能、そしてOpenAIのバッキングにより、Codex CLIは今後のAI支援開発ツールのスタンダードとなる可能性を秘めています。オープンソースファンドの設立も、コミュニティの成長を促進する良い取り組みです。