Codex–Claude Council について
Codex–Claude Councilは、Codex CLI経由のChatGPTとClaude Code経由のClaudeが質問について複数ラウンドで議論し、回答を確認するローカルツールです。両方のCLIを使い、ファイルを変更せずにプロジェクト情報や最新のWeb情報を検討したいユーザー向けです。
主な機能
- 01CodexとClaudeによるラウンド制の議論
- 02合意確認と最終回答
- 03プロジェクトファイルとGit履歴の確認
- 04読み取り専用のプランモード
- 05最新情報のWeb検索
- 06既存モデルセッションへの参加
活用シーン
- 01プロジェクト計画への追加レビュー
- 02技術的な質問に対するモデル回答の比較
- 03最新APIやドキュメント情報の確認
- 04変更を加えずにプロジェクト履歴を確認
MCP 対応
MCPクライアント向けにローカルstdio MCPサーバーを提供し、インストール済みのCodex CLIとClaude Code CLIを呼び出します。Claude Desktopにも登録できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
8掲載時のツール一覧 · 1 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| skill | string | いいえ | 任意:已インストールされたスキルの名前。両モデルは、必要と判断した段階でこの質問への回答に使用でき、呼び出されるサブエージェントも含みます。複数のスキルは名前をカンマ区切りで指定します("llm-council, caveman")。ユーザーが名前で指定したスキル、またはスキルが定める起動フレーズで要求したスキルのみ渡してください。Claude Code と Codex の有効なプラグインのスキルも指定できます。インストール済み:なし(`codex-claude-council skill add <GitHub URL>` でインストール)。スキルを使用する段階は大幅に時間がかかり、両プランの利用枠をより多く消費します。 |
| network | boolean | いいえ | 任意:Codex のシェルコマンドによるネットワークアクセスを許可するかどうか(例:API の呼び出しやライブデータの取得)。ディスク上の操作は引き続き読み取り専用です。省略すると設定済みの既定値を使用します(ユーザーが変更していない場合は off)。ユーザーが求めた場合に限り true を渡してください。 |
| question | string | はい | 質問と、モデルに必要なコンテキスト。 |
| workspace | string | いいえ | 作業中のプロジェクトフォルダーの絶対パス。両モデルはそのフォルダー内でプランモードで作業し、ファイルの読み取り、検索、git log や diff などの読み取り専用コマンドを実行しますが、変更は一切行いません。質問がこのプロジェクトのコード、変更、修正、エラー、ログに関する場合は必ず渡してください。どのプロジェクトにも関係しない質問の場合(または session id を渡す場合。セッション固有のフォルダーが使用されます)に限り省略します。 |
| max_rounds | integer | いいえ | 任意:やり取りの上限。2つの独立した回答の後、両モデルが合意するまで、互いの最新メッセージに順次返信します。その後、統合担当が最終回答を作成し、もう一方が確認します。N(1以上):最大 N 回のやり取り。0:上限なし(長時間かかり、両プランの利用枠を大幅に消費する場合があります)。省略すると設定済みの既定値を使用します(ユーザーが変更していない場合は 5)。ユーザーがラウンド数を指定した場合、または上限なしの合意を求めた場合に限り設定してください。 |
| web_search | boolean | いいえ | 任意:モデルによるウェブ検索とウェブページの閲覧を許可するかどうか。省略すると設定済みの既定値を使用します(ユーザーが変更していない場合は on)。ユーザーがインターネットアクセスを禁止した場合に限り false を渡してください。 |
| codex_model | string | いいえ | 任意の Codex(ChatGPT)モデルの上書き指定(例:gpt-5.6-sol)。省略すると設定済みの既定値を使用します。ユーザーが特定のモデルを指定した場合に限り設定してください。 |
| synthesizer | enum | いいえ | 任意:最終回答を作成するモデル("codex" は ChatGPT)。もう一方が確認します。省略すると設定済みの既定値を使用します(ユーザーが変更していない場合は Claude)。claude | codex |
| claude_model | string | いいえ | 任意の Claude モデルの上書き指定:opus、sonnet、fable などのエイリアス、または完全なモデル名を指定します。省略すると設定済みの既定値を使用します。ユーザーが特定のモデルを指定した場合に限り設定してください。 |
| codex_effort | enum | いいえ | 任意の Codex 推論強度の上書き指定。省略すると設定済みの既定値を使用します。ユーザーが指定した場合に限り設定してください。none | minimal | low | medium | high | xhigh |
| claude_effort | enum | いいえ | 任意の Claude 推論強度の上書き指定。省略すると設定済みの既定値を使用します。ユーザーが指定した場合に限り設定してください。low | medium | high | xhigh | max |
| codex_session_id | string | いいえ | 任意:ユーザーがすでに持っている Codex セッション。その ID(`/status` に表示)または `/rename` で付けた名前を指定します。別のマシンの場合は user@host:<id or name>(ssh 経由でそのマシン上で実行)を指定し、新しいセッションではなく既存のセッションを継続して、モデルの記憶を維持します。ユーザーが指定した場合に限り、そのまま渡してください。Council のターンはプランモードでそのセッションに追加されます(変更は行われません)。 |
| claude_session_id | string | いいえ | 任意:ユーザーがすでに持っている Claude Code セッション。その UUID(`/status` に表示)または `/rename` で付けた名前を指定します。別のマシンの場合は user@host:<id or name>(ssh 経由でそのマシン上で実行)を指定し、新しいセッションではなく既存のセッションを継続して、モデルの記憶を維持します。ユーザーが指定した場合に限り、そのまま渡してください。Council のターンはプランモードでそのセッションに追加されます(変更は行われません)。 |
詳細
2つのAI。1つの答え。
ChatGPT(Codex経由)とClaudeに同じ質問をします。
互いに何度も議論を重ね、1つの答えで合意するまで話し合います。
お手持ちのサブスクリプションを使って、Claude Code・Claude Desktop(Cowork)・Codex・ChatGPTデスクトップアプリ・ターミナルで、
Windows、macOS、Linuxに対応しています。
クイックスタート · 仕組み · 使い方 · 使用例 · オプション · 設定 · トラブルシューティング
| 🔍 どちらも、プランモードでプロジェクト内の作業ができます ファイルを読み込み、検索し、 git log や git diff などの読み取り専用コマンドを実行しますが、どちらも何も変更できません。 | 🧰 独自の環境設定で使えます スキル、プラグイン、MCP サーバー、 CLAUDE.md/AGENTS.md はどちらにも適用されます。 |
| 🔁 選んだセッションで使えます 新しいセッション、既存の Claude Code および Codex のセッション(すでに把握している内容をすべて含む)、または、2人のメンバーの一方として質問中のセッションです。 | 🌐 ウェブを利用できます どちらも記憶に頼らず、最新バージョン、API、ドキュメントを確認します。 |
| 🧩 必要に応じてスキルを使えます llm-council、caveman、ponytail、graphify などがあります。 | 🔑 API キーは不要です お使いのコンピューター上で、ChatGPT にサインインした独自の Codex CLI と、Claude プランにサインインした Claude Code CLI を実行します。 |
クイックスタート
- インストール Claude Code と Codex にインストールします(まず Node.js と両方の CLI を確認します。他の方法はインストールをご覧ください)。
npx -y codex-claude-council install - 再起動 Claude Code と Codex を再起動して、プラグインを読み込ませます。
- 質問 プロジェクト内で、次のように尋ねます:「評議会に聞いてください。このプロジェクトは何をするもので、最初に何を改善すべきですか?」
実際の評議会(簡易版、待ち時間はカット):2回のやり取りで意見が食い違った後、1つの回答に収束します。assets/demo.tape を使って記録しました。
ヒント
すでに片方のモデルのセッションを使っていますか?「私の Codex セッション 019a… と話し合って」と言うと(Claude Code 内で)、そのセッションがすでに把握している内容をすべて含めて、あなた自身のセッションも参加します。
council_joinをご覧ください。
なぜ2つのモデルを使うのですか?
1つのモデルは、自信たっぷりに正解または不正解を答えます。互いに異なる意見を持つ2つのモデルが、その理由を説明し合うことで、2人目のレビュアーのように、片方だけでは見落とす点を見つけられます。
実際の実行例(簡易版):「ユーザー数が約20人の単一サーバー用社内ツールには、PostgreSQL と SQLite のどちらがよいですか?」
| ChatGPT | Claude | |
|---|---|---|
| 最初の回答 | SQLite | PostgreSQL |
| やり取り 1 | 主張を維持:「ユーザーが20人というだけでは、書き込み競合が発生するとは限りません」 | 大半の指摘を受け入れて SQLite に変更しますが、1つだけ異論を残します |
| やり取り 2~3 | PostgreSQL が適切となる条件を明確にします | 「アプリのインスタンスが複数あること」を理由として挙げるのをやめます |
| やり取り 4 | 同意します | 同意します |
| 最終チェック | 最初の最終回答を却下します(120語の上限を超え、裏付けのない主張が1つあるため)。修正版は受け入れます |
最終回答は、どちらかの最初の回答よりも明確でした。SQLite を使い、PostgreSQL に移行すべき条件を正確に示しています。議論の全体をページでご覧ください:開く(ソース)。--html を使って独自のページを作成する方法は、ターミナルからをご覧ください。
ベンチマーク
複数の落とし穴が絡み合う24個のプログラム(難問セット:ネストされたプロミスとタイマーにまたがるイベントループ、クラスフィールド、yield from、結合におけるNULLなど)について、それぞれ「これは正確には何を出力しますか?」と質問し、実際の出力と照らして採点します。Codex gpt-6.1-solとClaude Sonnet 5.5を、どちらも低い労力設定、新規セッション、ウェブ検索なしで評価しました(2026年10月13日)。
| 正解数 | 1問あたりの中央値 | |
|---|---|---|
| Codex単独 | 24 / 24 | 18秒 |
| Claude単独 | 23 / 24 | 11秒 |
| Council | 24 / 24 | 59秒 |
- Councilは1つの間違いを見つけました:
h-py-dunderでClaude単独はV3 V102 V3 …と出力しましたが、Councilは両モデルの見解が一致したうえで、正しいV3 V102 V102 …を出力しました。 - 結果を悪化させることはありませんでした: Councilが間違え、いずれかのモデルが単独で正解した問題はありません。
- この結果が示すこと: 今回はCodex単独ですでに完璧だったため、Councilの利点は保険です。どのモデルが間違えるか事前にわからなくても、約3〜5倍の時間でより良い答えを得られます。24問中1問の間違いは小さなサンプルであり、証明にはなりません。
すべての回答は結果ファイルにあります。お手持ちのモデルと労力設定で実行してみてください。
目次
仕組み
flowchart LR
Q[Your question] --> CA[Codex answers]
Q --> LA[Claude answers]
CA -- to Claude --> L1[Claude replies]
LA -- to Codex --> C1[Codex replies]
L1 -- to Codex --> C2[Codex replies]
C1 -- to Claude --> L2[Claude replies]
C2 & L2 --> V{Both agree?}
V -- no: exchange again --> V
V -- yes --> F[One writes the final answer, the other checks it]
- 回答:両方のモデルが、互いの回答を見ずにそれぞれ回答します。
- 意見交換:各モデルは相手の最新メッセージ(最初は回答、その後は返信)を受け取り、各点について返信します。受け入れる点と立場がどう変わったか、まだ意見が異なる点とその理由、そして現時点での回答と判定(
AGREEまたはDISAGREE)を示します。2つの返信は交差して届き、意見交換が繰り返されます。各ラウンドを重ねるごとに差が縮まる、交差したジグザグのやり取りです。 - 合意:同じ意見交換で両方が
AGREEと答えた時点で、一方のモデルが最終回答を書き、もう一方が合意内容と一致していることを確認します(デフォルトでは最大5ラウンド。上限を設けない場合はmax_rounds: 0を指定します)。 - 合意に至らない場合:先に上限に達した場合、最終回答では合意した点と、まだ議論中の各点について両者の立場を示します。
どちらか一方のモデルが議論を主導することはありません。各ラウンドでは両方が同時に相手へ返信し、合意した後にのみ一方が最終回答を書きます。各モデルは質問ごとにセッションを維持するため、議論の内容とすでに読んだことを記憶します。また、各プロンプトには、そのモデルがまだ見ていない内容だけが含まれます。
必要条件
| 必要なもの | インストール | サインイン |
|---|---|---|
| Node.js 20 以降:小さな MCP サーバーを実行します(依存関係なし) | nodejs.org | – |
| Claude Pro、Max、Team、または Enterprise プランを含む Claude Code CLI | macOS / Linux / WSL:curl -fsSL https://claude.ai/install.sh | bashWindows: irm https://claude.ai/install.ps1 | iex | claude auth login |
| ChatGPT プランを含む Codex CLI | 任意の OS:npm install -g @openai/codexmacOS: brew install --cask codex | codex login → ChatGPT でサインイン |
| Git(推奨) | 通常はすでにインストールされています | – |
- 両方の CLI が必要です。 インストーラーは CLI の有無を確認し、どちらかが見つからない場合は、次のインストール手順を表示して終了します。各評議会の実行前に、実行する CLI のサインイン状態を確認し、サインインが完了するまで何も送信しません。
- Git を使うと、両方のモデルでプロジェクトの履歴、変更、blame を確認でき、
skill addでリポジトリのスキルをダウンロードできます。
重要
両方の CLI を最新の状態に保ってください。 評議会では、Claude Code の plan モードと
stream-json出力、Codex のexec resumeとウェブ検索など、最近のオプションを使用します。実行に失敗し、「unknown option」または「unexpected argument」と表示された場合は、表示された CLI を更新してください:claude update、またはnpm install -g @openai/codex@latest。
インストール
macOS / Linux / WSL
curl -fsSL https://raw.githubusercontent.com/hamza-aziz-ai/codex-claude-council/main/install.sh | bash
Windows(PowerShell)
irm https://raw.githubusercontent.com/hamza-aziz-ai/codex-claude-council/main/install.ps1 | iex
Node.js があれば、どの OS でも利用できます
npx -y codex-claude-council install
インストーラーは Node.js と両方の CLI(それぞれのサインイン状態も含む)を確認してから、このリポジトリのマーケットプレイスを Claude Code と Codex に追加し、両方にプラグインをインストールします(Claude Code ではユーザー用にインストールされるため、すべてのプロジェクトで利用できます)。プラグインがすでにインストールされている場合は、代わりに更新します。
オプション: --only claude|codex(一方のアプリのみ。両方の CLI は引き続き必要です)、--claude-desktop(Claude Desktop の Chat タブにもサーバーを登録します)、--dry-run(コマンドを実行せずに表示します)。オプションを渡すには、次のようにします:
curl -fsSL https://raw.githubusercontent.com/hamza-aziz-ai/codex-claude-council/main/install.sh | bash -s -- --claude-desktop
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/hamza-aziz-ai/codex-claude-council/main/install.ps1))) --claude-desktop
その後:
- Claude Code と Codex(および Claude Desktop)を完全に終了して再起動し、プラグインを読み込ませます。
- セットアップを確認します:
npx -y codex-claude-council doctor。 - プロジェクトで試してみます:「評議会に尋ねてください:このプロジェクトは何をするもので、最初に何を改善しますか?」
更新
npx -y codex-claude-council update # both apps
npx -y codex-claude-council update --only claude # or --only codex
npx -y codex-claude-council update --dry-run # show the commands only
マーケットプレイスを更新し、Claude Code と Codex のプラグインを更新します。その後、両方を完全に終了して再起動してください。インストーラーを再実行しても同じ処理が行われます。CHANGELOG.md に変更内容が記載されています。Claude Desktop では 自動同期(または 設定 → プラグイン の 同期)を通じて更新されます。ChatGPT デスクトップアプリでは、設定 → プラグイン からプラグインを更新してください。
警告
Windows: Codex で 「failed to back up plugin cache entry: Access is denied. (os error 5)」 と表示されて失敗する場合、起動中のアプリがプラグインのフォルダーを開いたままにしています(バージョン 0.5.1 以前で発生していました)。Codex と Claude のすべてのセッション、IDE 拡張機能、デスクトップアプリを終了してから、もう一度更新してください。
またはアプリごとにインストール
| アプリ | 方法 |
|---|---|
| Claude Code | claude plugin marketplace add hamza-aziz-ai/codex-claude-councilclaude plugin install codex-claude-council@codex-claude-council --scope user |
| Codex(CLI と IDE 拡張機能) | codex plugin marketplace add hamza-aziz-ai/codex-claude-councilcodex plugin add codex-claude-council@codex-claude-council |
| Claude Desktop(Cowork と Code) | Settings → Customize → Plugins → + Add → Add marketplace → Add from a repository を選択し、hamza-aziz-ai/codex-claude-council を入力して、Sync automatically をオンにし、Sync をクリックしてから、codex-claude-council をインストールします |
| Claude Desktop、ワンクリック拡張機能 | 最新リリースから codex-claude-council-<version>.mcpb をダウンロードして開きます(または Settings → Extensions → Install Extension… を選択します)。Claude Desktop に MCP サーバーが追加されます。Codex と Claude Code の CLI は、引き続きインストールしてサインインする必要があります。 |
| Claude Desktop、Chat タブ | npx -y codex-claude-council install --claude-desktop --only claude を実行してから、Claude Desktop を完全に終了し、再度開きます |
| ChatGPT デスクトップアプリ | Settings → Plugins → Add → + Add a marketplace を選択し、Source に https://github.com/hamza-aziz-ai/codex-claude-council.git を入力して、Add marketplace をクリックし、codex-claude-council をインストールします |
| その他の MCP クライアント(Cursor、VS Code、Windsurf、…) | コマンドを npx、引数を ["-y", "codex-claude-council", "mcp"] として、ローカル(stdio)MCP サーバーを追加します(設定は以下を参照)。MCP Registry では io.github.hamza-aziz-ai/codex-claude-council として、Smithery にも掲載されています |
JSON で設定するクライアント(Cursor の mcp.json、Windsurf、Claude Desktop の claude_desktop_config.json、…)では、次の内容を貼り付けます。
{
"mcpServers": {
"council": {
"command": "npx",
"args": ["-y", "codex-claude-council", "mcp"]
}
}
}
メモ
使用中はデスクトップアプリを開いたままにしてください。コーディルはローカルの CLI を通じてコンピューター上で実行されるため、両方ともインストールしてサインインしておく必要があります。
使い方
自然な言葉で尋ねるだけです。ホスト(質問に使っているアプリ)がツールを選び、入力内容を設定します。
| あなたの発言 | 実行される内容 |
|---|---|
| 「評議会に聞いてください。この場合、Postgres と MongoDB のどちらを使うべきですか?」 | council_ask:両方が回答し、最終回答が1つにまとまるまで互いに返答します |
| 「この移行計画について、評議会で討論してください。」 | council_debate:最終回答に加え、両方の回答、すべてのやり取り、最終確認を返します |
| 「この関数について、Codexのセカンドオピニオンを聞いてください。」 | council_ask_codex(Claude だけの場合は council_ask_claude) |
| 「私の Codex セッション 019a… と議論して、このリファクタリングが安全かどうか確認してください。」(Claude Code で質問) | council_join:このセッションが自ら参加し、Codex はセッション 019a… を続行します |
| 「評議会に聞いてください。私の Claude セッション 3f2a… と **私の Codex セッション「auth refactor」**を続行してください。私の計画は妥当ですか?」 | claude_session_id と codex_session_id を指定した council_ask |
| 「評議会に聞いてください。gpt-5.6-sol を xhigh で実行する ChatGPT と max で実行する opus の Claudeを使ってください:…」 | モデルと推論の労力をそれぞれ指定した council_ask |
| 「評議会に聞いて、合意するまで続けてください:…」 | max_rounds: 0 を指定した council_ask |
| 「評議会に聞いて、ChatGPT に最終回答を書かせてください:…」 | synthesizer: "codex" を指定した council_ask |
| 「評議会に聞いてください。アプリで最新の Next.js リリースにアップグレードしても安全ですか?」 | council_ask:両方がプロジェクトを読み込み、ウェブを検索します |
| 「インターネットに接続せずに評議会に聞いてください:…」 | web_search: false を指定した council_ask |
| 「llm-council スキルを使って評議会に聞いてください。請求サービスを書き直すべきですか、それともリファクタリングすべきですか?」 | skill: "llm-council" を指定した council_ask |
| 「llm-council と caveman のスキルを使って評議会に聞いてください:…」 | skill: "llm-council, caveman" を指定した council_ask |
プロジェクト内では、ホストがフォルダーを workspace として渡し、モデルは必要なものを自ら読み込みます。ファイル全体を貼り付けるのではなく、ファイル、関数、失敗したテスト、エラーを指定してください。ホストが自ら参加しない限り、モデルはホストとの会話を見ることができないため、ホストはタスクと、プロジェクト内にない関連情報を伝えます。
メモ
長時間の実行。 評議会の処理には数分かかります。回答のための CLI 呼び出しが2回、やり取りごとに2回、最終回答とその確認のために2回あり、すべて両方のプランの上限にカウントされます。一部のアプリでは、約60秒でツール呼び出しが終了します(Claude Desktop が該当します)。そのため、各ツールは回答、または「処理中」、現在のステップ、
job_idを約50秒以内に返します。ホストは回答が準備できるまでcouncil_resultを呼び出し、その間も評議会の処理は続行します。council_cancelでジョブを停止できます。
例とベストプラクティス
適切なツールを選ぶ
flowchart TD
S{What do you want?} -->|a quick second opinion| O[council_ask_codex / council_ask_claude]
S -->|a cross-checked answer| W{Who should take part?}
W -->|two fresh sessions| CA[council_ask]
W -->|my existing Claude Code and Codex sessions| CS[council_ask with claude_session_id and codex_session_id]
W -->|the session I am in, with the other model| CJ[council_join]
S -->|every step, to see where they disagree| D[council_debate]
ホストはあなたの発言からツールを選びます。確実にしたい場合は、ツール名を指定してください。
| 目的 | 言い方 | 避ける言い方 |
|---|---|---|
council_join(現在のセッションが参加) | 「私の Codex セッション 019a… と議論して…」、「私の Codex セッションと一緒に、Claude としてあなた自身も参加して…」、または「council_join を使って…」 | 「私の Codex セッションで council_ask」。代わりに別の Claude セッションが開始されます |
自分のセッションを使った council_ask | 「評議会に聞いてください。私の Claude セッション…と Codex セッション…を続行してください」 | 質問元のセッション名を指定する |
council_debate | 「…について、評議会で討論してください」、「すべてのステップを見せてください」 | – |
デスクトップアプリから使用する
Claude Cowork と ChatGPT Work の会話。 ChatGPT の Work モードでの会話は Codex セッションとして保存されるため、プラグインはタイトルを指定してその会話を続けられます。Cowork の会話で、次のように尋ねます。
ChatGPT Work のセッション「Find UAE job platforms」と話し合ってください。まず注目すべき求人ポータルを3つ挙げ、その理由を説明してください。
- Cowork は Claude 側のメンバーです。 プロジェクトが提供するフォルダー、指示、コネクター、スキルをすべて利用できます。
- Codex はその Work の会話を読み取り専用で続けます。 Codex は専用のフォルダーを使用し、議論のやり取りは会話を再度開くと表示されます。まず ChatGPT アプリで会話を閉じてください。
- Cowork の会話を外部から続けることはできません。 Cowork は会話を Claude Code のセッションとして保存しません。Cowork に参加させるには、Cowork から開始してください。
- プロジェクトフォルダーを共有します。 両方のアプリのプロジェクトでコンピューター上の同じフォルダーを使用すると、両方のモデルが同じファイルを読み取ります。アプリ内だけに保存された指示(Cowork プロジェクトの指示、ChatGPT プロジェクトの設定)は共有されません。もう一方のモデルには、代わりにフォルダー内の
CLAUDE.md/AGENTS.mdが表示されます。
メンバーがアクセスできない情報を渡す
メンバーはコンピューター上で読み取り専用で動作します。デフォルトでは、Codex のコマンドはネットワークにアクセスできません。API の呼び出し、データベースへの問い合わせ、Google スプレッドシートや claude.ai のリンクを開くことはできません。また、ウェブ検索は OpenAI 側で実行され、公開ページにしかアクセスできません。Claude の読み取り専用コマンドはネットワークにアクセスできます。network を有効にすると、Codex も API を呼び出せるようになります。いずれの場合も、ログインが必要なデータ(SSH、データベース、非公開のスプレッドシート)は、質問から参照できるよう、まずホストがワークスペースに収集するのが最適です。
flowchart LR
subgraph Remote[Out of the members' reach]
L[(Server logs)]
DB[(Database)]
G[Google Sheet]
A[claude.ai artifact]
end
H[Host session] -->|ssh, export, download| F["workspace/.council-data/<br/>(in .git/info/exclude)"]
L & DB & G & A -.-> H
F --> C[Claude member]
F --> X[Codex member]
- 質問に必要なものだけをコピーします。 たとえば、ログフォルダー全体ではなく、対象の呼び出しに関するログ行だけをコピーします。
- コピーを git の対象外にします。 コンピューター上にのみ保持される
.git/info/excludeに記載したフォルダーに入れてください。 - 質問にシークレットを含めないでください。 質問は両方のセッションに保存され、両方のプロバイダーに送信されます。代わりに、ホストが環境変数から接続文字列を読み取るようにしてください。
うまく機能する質問を書く
メンバーにはホストとの会話は見えません。参照できるのは question(最大12,000文字)とワークスペースだけです。長いタスクでは、プロンプトを2つに分けます。
## Part A — instructions for you (the host), not sent to the other model
1. Collect the data into .council-data/ (see above).
2. Start council_join with me "claude", other_session_id "<id>",
workspace "<absolute path>", max_rounds 0.
3. When they agree, show me the result and wait for my OK before changing code.
## Part B — the council question (send verbatim)
Goal: <what you want, and what "done" means>.
Data: <each file or folder, and its format>.
Tasks: 1. Measure … 2. Trace the code path (file:line) … 3. Propose the smallest fix as a diff …
Constraints: every claim cites a log line, a file:line or a measured number.
- 何を見つけるかではなく、何を測定するかを伝えます。 質問に答え(「p50 は 2.7 秒」など)が書かれていると、もう一方のモデルは確認せずに同意しがちです。先行する調査結果は、モデル自身の測定が終わってから開くファイルとして渡します。「自分で数値を測定するまでは prior-study.md を開かないでください。その後で比較してください。」
- 証拠と測定結果を求めます。 「節約できた時間は測定値で報告し、目標値に合わせて切り上げないでください」と指定すれば、「2秒節約する」という目標が事実として報告されるのを防げます。
- 前提は事実ではなく質問として示します。 「まず測定し、高速な経路が存在すると仮定しないでください」と伝えれば、誤った前提をモデルが訂正できます。
- メンバーは提案のみを行います。 読み取り専用のため、合意した変更は後からホストが適用し、テストしてコミットします。
- Claude Code では、
/goalは4,000文字までです。 長いプロンプトはファイルに保存し、/goalには短い条件を指定します。"/goal Follow every step in /path/task.md in order. Done when: …"
スキル、モデル、推論量
- 複数のスキルを同時に使う。 すべて指定します(
skill: "llm-council, caveman"、または--skill llm-council --skill caveman)。両方のモデルが各スキルの指示を受け取り、適切な場面でそれぞれを使います。council_joinを使う場合は、ホストにも同じスキルを実行させてください。 - 負荷の高いスキルは一度だけ使う。 llm-council は実行のたびに5人のアドバイザーを起動します。毎回ではなく、最終プランを決めるときに一度だけ依頼してください。
- モデルと推論量: 指定していない項目は、プラグインの設定(デフォルトの推論量は
high)、次に各 CLI 自身の設定が使われます。そのため、Codex は~/.codex/config.tomlのモデルを使いますが、プラグインのhigh推論量が、そこで設定した推論量に優先します。一度の質問でxhighまたはmaxを指定するか、設定で設定してください。
セッション
- 評議会を続行する前にセッションを閉じる。 Codex CLI またはアプリで開いているセッションは、Codex が拒否します(「すでにアクティブな書き込み元があります」)。Codex がまだ保存していないセッション(メッセージを送信していないもの)も続行できません。
- どのセッションを使うかが重要な場合は、ID を渡す。 名前は簡単に再利用できます。
codex resumeと/statusに ID が表示されます。
参加するメンバー
2人のメンバーを実行する方法は3つあります。どの方法でも、話し合いの内容は同じです。
| Claude メンバー | Codex メンバー | 使う場面 | |
|---|---|---|---|
| 新しいセッション(デフォルト) | 新しい Claude Code セッション | 新しい Codex セッション | どちらからも新鮮で独立した意見がほしい場合 |
| 自分のセッション | 続行する自分の Claude Code セッション | 続行する自分の Codex セッション | 両方のセッションがすでに作業内容を把握している場合 |
| 自分も参加する | 質問元のセッション(Claude Code の場合) | 続行する自分の Codex セッション、または新しいセッション | 今いるセッションに、もう一方のモデルと話し合いをさせたい場合 |
新しいセッション
デフォルトでは、それぞれの側で workspace 内に新しい Codex / Claude Code セッションを実行します。セッションはホストセッションが続く限り維持されます。フォローアップの質問では同じセッションを再利用するため、モデルは以前の質問や読んだ内容を記憶しています。新しいホストセッションを開始すると、評議会も新しいセッションを開始します。
セッション
すでに利用しているセッションを ID または名前で指定すると、評議会はそのセッションを、これまでに読んだ内容や議論した内容をすべて引き継いで、そのまま続行します。評議会のターンはセッションに追加されるため、あとで戻ると議論を確認できます。
| ツール | 入力 | ターミナル |
|---|---|---|
council_ask, council_debate | claude_session_id, codex_session_id(いずれか、または両方) | --claude-session <id|name>, --codex-session <id|name> |
council_ask_claude, council_ask_codex | session_id | --session <id|name> |
セッションの ID を確認する方法、または名前を付ける方法:
| Claude Code | Codex | |
|---|---|---|
| ID | セッション内の /status(UUID が表示されます)、または claude --resume | セッション内の /status。または ~/.codex/sessions/YYYY/MM/DD/rollout-…-<id>.jsonl のファイル名末尾 |
| 名前 | セッション内の /rename <name> | セッション内の /rename <name> |
| 一覧 | claude --resume | codex resume(このフォルダー)、codex resume --all(すべてのフォルダー) |
- 名前は、各 CLI が管理する場所で検索されます。Claude Code ではセッション自身のトランスクリプト、Codex では
~/.codex/session_index.jsonlが対象です。同じ名前のセッションが複数ある場合は、最後に使用したものが選ばれます(大文字と小文字だけが異なる場合は、完全一致するものが優先されます)。名前にはスペースを含められます:--codex-session "auth refactor"。 - 名前は誤って使い回しやすいため、どのセッションを使うかが重要な場合は ID を指定してください。
- 各セッションは、開始時に使っていたフォルダーで実行されます。このフォルダーがデフォルトの
workspaceでもあります。別のフォルダーで作業させるには、workspaceを指定してください。 - 評議会のターンでは、どちらも、元のセッションでどのモードを使っていたかにかかわらず、プランモード/読み取り専用で実行されます。
- **まずセッションを閉じてください。**少なくとも、評議会の実行中はセッションに入力しないでください。1 つのセッションに 2 つのプログラムが書き込むと、履歴が混在する可能性があります。評議会のターンを確認するには、そのあとセッションを再開してください(
claude --resume <id>、codex resume <id>)。 - 質問を送るセッション自身の ID は指定しないでください。そのセッションも参加させるには、
council_joinを使います。
別のマシン上のセッション
別のコンピューター上のセッションも参加できます。セッションの ID または名前を使って、user@host:session の形式で指定します。例:--claude-session [email protected]:fix-order-dialog-bugs または "continuing my Claude session [email protected]:fix-order-dialog-bugs"。そのメンバーは ssh 経由で、そのマシン上で実行されます。このプラグイン独自の codex/claude コマンドを使い、そのマシンの CLI と そのマシンでのサインイン情報(ここで使用しているアカウントと同じである必要はありません)を使って、こちらと同様に読み取り専用で、セッション自身のフォルダー内で実行されます。
- **必要なもの:**このコンピューターからの鍵ベースの
ssh(パスワード入力を求められないこと。ssh -o BatchMode=yes user@host trueが成功する必要があります)、およびそのマシン上の Node.js 20 以降と、サインイン済みの CLI(Linux または macOS)。nvm でインストールされた Node.js も、nvm が~/.bashrc内でしか読み込まれない場合でも検出されます。プラグインはそのマシンにはインストールされません。呼び出しのたびにnpxがこのプラグインのバージョンを取得します。 - モデルと推論の労力には、そのマシンの設定が使われます。呼び出し時に指定すれば変更できます。
- スキル(
skill):評議会はsshを 1 回実行し、そのマシンの CLI にインストールされているスキルを、そのマシンのセッションのフォルダー内でも確認します。インストールされているスキルは名前で読み込み、それ以外のスキルの指示は送信されます。確認に失敗した場合は、すべてのスキルの指示が送信されます。 - **保存済みのセッションを続行します。**開いているウィンドウのセッションではありません。評議会の実行中はそのセッションに入力せず、終了後に再開して評議会のターンを確認してください。
- キャンセルすると、こちらでは評議会が停止します。そのマシンですでに実行中のターンは、そこで完了します。
sshは PATH 上から検索されます。別のものを使うには、設定で"ssh": { "command": "<path>" }を指定してください。
自分も参加する:council_join
リポジトリに Claude Code セッション abcd と Codex セッション efgh があり、abcd で作業しているとします。そこで、次のように依頼します:「Codex セッション efgh と、認証モジュールを分割すべきか話し合ってください」。
abcd自身が Claude メンバーになります。 2つ目の Claude セッションは開始されません。council_joinは Claude の各ターン(Claude メンバーが受け取るものと同じプロンプト)をabcdに渡します。abcdは、すでに把握している情報をすべて踏まえて、自分の会話内で応答を作成し、それぞれをcouncil_turnで送信します。- Codex は
efghをそのまま続行し、読み取り専用で動作します。 セッション ID が指定されていない場合、Codex は新しいセッションを開始します。 - 手順は
council_askと同じです。abcdと Codex は両者が合意するまで応答を交わし、合意した回答はabcdに届きます。最終回答はabcdが作成し、Codex が確認します。ただし、別の統合役を指定した場合はその限りではありません。
逆の場合も同様です。Codex セッションから council_join を使うと、そのセッションが Codex メンバーになり、指定した Claude Code セッション(または新しいセッション)を Claude が続行します。
- ホストにはファイルを変更しないよう求めますが、強制はしません。 もう一方のモデルは通常どおり読み取り専用ですが、依頼元のセッションは独自の権限を維持します。
- サインインが必要なのは、もう一方のモデルの CLI だけです。
- ホストの各ターンには最大
skill_timeout_seconds(既定値は 1800 秒)かかる場合があります。時間を超えると、評議は停止します。council_cancelを使えば、いつでも停止できます。 - ターンを実行するホスト(Claude Code、Codex、デスクトップアプリ)が必要なため、ターミナルコマンドではありません。
メンバーが利用できる機能
Claude メンバー(claude -p) | Codex メンバー(codex exec) | council_join を使うホスト | |
|---|---|---|---|
| モード | プランモード | 読み取り専用サンドボックス(Codex のコマンドラインにはプランモードがありません) | 独自のモードを維持 |
| 利用できる設定 | 設定、スキル、プラグイン、MCP サーバー、CLAUDE.md、フック | config.toml:スキル、プラグイン、MCP サーバー、AGENTS.md、ルール | すでに利用できるすべて |
| できること | 読み取り、検索、読み取り専用コマンドの実行(git log、diff、blame、curl など)、スキルやサブエージェントの使用、ウェブ検索 | 読み取り、検索、変更を加えないコマンドの実行、スキルやサブエージェントの使用、ウェブ検索。network が有効な場合は、コマンドからネットワークに接続 | 通常できることは何でも。ただし、ファイルを変更しないよう求められます |
| できないこと | 編集、書き込み、その他のコマンドの実行、質問、プラグインの使用 | どこにも書き込めません。network が有効でない限り、コマンドからネットワークに接続できません。何に対しても承認を得られません。プラグインを使用できません | – |
レポートの保存やインデックスの作成など、何かを変更するステップで使用するスキルは、そのステップがスキップされます。MCP サーバーのツールはそれぞれ独自のプロセスで実行されます。プランモードでは、Claude のツールのうち変更を伴うものが拒否されます。一方、Codex は各サーバー独自の承認設定に従います。セキュリティとプライバシーを参照してください。
オプション
Agreement:max_rounds と synthesizer
max_rounds | 動作 |
|---|---|
| 省略 | 設定済みのデフォルト:最大5回のやり取り。双方が合意した時点で終了します |
N(1以上) | 最大N回のやり取り。双方が合意した時点で終了します |
0 | 無制限:双方が合意するまでやり取りを続けます(時間がかかり、両方のプランを多く消費する場合があります) |
1回のやり取りでは、各モデルが互いの最新メッセージに対して、同時に1つずつ返信します。双方が同じやり取りの最後に AGREE を出した時点で合意となります。その後、synthesizer が最終回答を作成し、もう一方のモデルが合意内容と一致しているかを確認します。一致していない場合、作成者が1回修正します。
デフォルトでは Claude が最終回答を作成します。切り替えるには、synthesizer: "codex" を渡すか、設定で変更します。council_join では、ホストがどのモデルであっても、コンテキスト全体を把握しているホストがデフォルトで作成します。代わりにもう一方のモデルに作成させるには、synthesizer を渡します。作成者は合意内容を文章にするだけです。議論自体は対称的に行われます。
合意に至らないまま上限に達した場合、synthesizer は、合意した点と、双方の立場を含む未解決の争点をまとめた最終回答を作成し、未合意としてマークします。途中で呼び出しが失敗した場合(使用制限に達した場合など)は、そこまでの内容と理由が返されます。
ウェブ検索:web_search
両方のモデルはウェブを検索してページを読むことができます(デフォルトで有効)。Codex はライブウェブ検索を、Claude は WebSearch と WebFetch を使用します。公式ドキュメントやリリースノートなどの一次情報を優先し、情報の出所を示して、互いの主張をそれらの情報源と照合します。workspace を指定すると、2つを組み合わせて次のような質問ができます:「src/billing での Stripe API の使用は、現在の API バージョンでも正しいですか?」
1つの質問で無効にするには web_search: false を指定します(「インターネットにアクセスせずに評議会に質問する」)。または、ターミナルで --no-web を指定するか、設定に "web_search": false を指定します。機密性の高いプロジェクトで使用する前に、セキュリティとプライバシーを参照してください。
Codex のコマンドにおけるネットワーク:network
デフォルトでは、Codex のコマンドはネットワークにアクセスできません(ウェブ検索は引き続き利用できます)。network を有効にすると、ディスクは読み取り専用のまま、API の呼び出しやライブデータの取得など、ネットワークにアクセスできるようになります。「Codex にネットワークアクセスを許可して評議会に質問する:API は新しいフィールドを返すようになりましたか?」といった質問に使えます。ターミナルで --network を指定するか、設定に "network": true を指定してください。Claude の読み取り専用コマンドは、プランモードですでにネットワークにアクセスできます。
- 接続先を制限するには、設定に
"network_domains": ["api.github.com", "*.example.com"]を指定します。リストを指定すると、Codex のネットワークプロキシは他のすべてのドメインをブロックします。空のリスト(デフォルト)の場合、すべてのドメインが許可されます。 - **仕組み:**Codex は読み取り専用のサンドボックスの代わりに、権限プロファイルで実行されます。ディスク全体が読み取り専用になり、ネットワークが有効になります。権限プロファイルは Codex のベータ機能であり、変更される可能性があります。Codex CLI 0.160 で確認済みです。
- **Windows:**Codex のサンドボックス内では、
curl.exe、Invoke-WebRequest、gitからの HTTPS 接続に失敗します(Windows 独自の TLS には、サンドボックスのアカウントの認証情報がないためです)。Python と Node は動作します。この制限は Codex に伝えられます。また、サンドボックスから~/.sshを読み取れないため、そこでの SSH ログインは動作しません。 - **デフォルトで無効なのには理由があります:**ファイルを読み取ってネットワークにアクセスできるモデルは、たとえば読み取ったログやウェブページに指示が含まれている場合(プロンプトインジェクション)に、それらのファイルを外部へ送信することもできます。ドメインリストを使用し、機密性の高いプロジェクトでは
networkを無効のままにしてください。
スキル:skill
スキルは、モデルが従うことのできる手法やスタイルをまとめた SKILL.md フォルダーです。リポジトリのスキルは一度インストールします。
npx -y codex-claude-council skill add https://github.com/aiwithremy/claude-skills-llm-council
npx -y codex-claude-council skill add https://github.com/JuliusBrussee/caveman.git
npx -y codex-claude-council skill add https://github.com/DietrichGebert/ponytail.git
npx -y codex-claude-council skill add https://github.com/Graphify-Labs/graphify.git
npx -y codex-claude-council skill list
npx -y codex-claude-council skill remove caveman-stats
skill addはリポジトリをクローンし、含まれるすべてのスキルを、それぞれのファイル(リファレンス、スクリプト)とともにインストールします。caveman は 20 個(caveman、caveman-review、caveman-compress、…)、ponytail は 6 個(ponytail、ponytail-review、…)、graphify と llm-council はそれぞれ 1 個です。リポジトリ内のフォルダー(…/tree/<branch>/<folder>)、ローカルフォルダー、またはSKILL.mdファイルも指定できます。git がない場合は、リポジトリ直下のSKILL.mdのみをインストールします。- スキルは
~/.codex-claude-council/skills/<name>/に保存されます。Claude Code(~/.claude/skills)または Codex(~/.codex/skills、~/.agents/skills)にネイティブにインストールされたスキルや、有効化されたプラグインのスキルも指定できます。その後、アプリを再起動するとツールに新しいスキルが表示されます(プラグインのスキルは一覧に表示されませんが、名前で利用できます)。 - メンバーがすでに持っているスキルは、名前を伝えるだけで、内容は送信されません。 メンバー自身の CLI にスキルがある場合(スキルフォルダー、プロジェクトの
.claude/skillsまたは.agents/skills、あるいは有効化されたプラグイン内)、メンバーには、他のスキルと同様に名前を指定して読み込むよう伝えます。不足しているスキルの指示だけが送信されます。ここでは llm-council と graphify の両方を両方の CLI にインストールしているため、最初のプロンプトを約 61,000 文字から約 1,100 文字に削減できます。council_joinのホストには、デスクトップアプリでは CLI のスキルを読み込めない場合があるため、常に指示の全文が渡されます。 - プラグインには、サードパーティ製のものは含まれていません。インストールする前に、スキルのライセンスと内容を確認してください(たとえば llm-council にはライセンスファイルがありません)。
スキルは、指定した場合にのみ使われます:「llm-council スキルを使って評議会に尋ねる:…」や、ターミナルでの --skill llm-council のように指定します。複数のスキルを使う場合は、すべての名前を指定します:「llm-council と caveman のスキルを使って」、skill: "llm-council, caveman"、または --skill llm-council --skill caveman のように指定します。両方のモデル(および council_join を使うホスト)には質問とともにスキルの指示が渡され、どの手順で必要かは、スキル独自のガイダンスに従ってそれぞれが判断します。たとえば、実際の意思決定や意見の不一致には llm-council のような手法を、すべての回答には caveman(簡潔な返答)や ponytail(機能する最もシンプルな解決策)のようなスタイルを使います。モデルがスキルを使う場合は、サブエージェントも含めて指示に完全に従います。サブエージェントも読み取り専用です。議論のルールが優先され、各回答はその手順で指定された形式で返されます。
graphify は、graphify-out/ に書き込む Python ツールを実行してナレッジグラフを構築します。メンバーはこの処理を実行できないため、まず自分で構築してください(pip install graphifyy を実行してから、プロジェクト内で graphify . を実行します)。その後、メンバーは graphify-out/GRAPH_REPORT.md と graph.json を読み取り、Codex は graphify query を実行できます。
サブエージェントを使うスキルの手順は数分かかることがあり、両方のプランをより多く消費します。このような呼び出しには、最大で skill_timeout_seconds(デフォルトは 1800)かかる場合があります。
ツールリファレンス
| ツール | 内容 | 任意の入力(question を除く) |
|---|---|---|
council_ask | 評議会全体に質問し、合意した回答を返します | codex_model、codex_effort、claude_model、claude_effort、synthesizer、max_rounds、workspace、web_search、skill、codex_session_id、claude_session_id |
council_debate | 同様ですが、すべての手順と設定を含む JSON を返します | council_ask と同じ |
council_ask_codex、council_ask_claude | 1 つのモデルのみ | model、effort、workspace、web_search、skill、session_id |
council_join | ホストがメンバーの 1 人として参加します | me(必須:claude または codex)、other_session_id、other_model、other_effort、synthesizer、max_rounds、workspace、web_search、skill |
council_turn | ホストのターンを送信します(council_id、text) | – |
council_result | 実行中のジョブの回答(または council_join の場合はホストの次のターン)を待ちます | job_id |
council_cancel | 実行中のジョブを停止します | job_id |
すべてのツールは、結果を structuredContent(outputSchema で宣言)としても返します。内容は status(done、working、your_turn、stopped のいずれか)、text、および次に使用する job_id または council_id です。0.11.7 より前のツール名(debate、ask_codex、ask_claude)も引き続き使用できます。
workspace:両方のモデルが作業するプロジェクトフォルダーの絶対パスです。Claude Code と Codex では、プラグインのスキルがホストに現在作業中のフォルダーを渡すよう指示します。- Codex の effort:
none、minimal、low、medium、high、xhigh。Claude の effort:low、medium、high、xhigh、max。 - Claude モデル:エイリアス(
opus、sonnet、fable)または完全なモデル名です。Codex モデル:Codex CLI が受け付ける任意の名前です。 - 指定しない項目には、設定の値が使われます。
ターミナルから
npx -y codex-claude-council ask "Which is faster for 10M rows, A or B?"
npx -y codex-claude-council debate "..." --codex-effort xhigh --claude-model opus
npx -y codex-claude-council ask "..." --max-rounds 0 # until both agree
npx -y codex-claude-council ask "..." --synthesizer codex # ChatGPT writes the final answer
npx -y codex-claude-council codex "..." --effort low # Codex only
npx -y codex-claude-council claude "..." --model sonnet # Claude only
npx -y codex-claude-council ask "..." --workspace ~/code/app # this project
npx -y codex-claude-council ask "..." --no-workspace # no project folder
npx -y codex-claude-council ask "..." --no-web # no web search
npx -y codex-claude-council ask "..." --network # Codex's commands may reach the network
npx -y codex-claude-council ask "..." --skill llm-council # with an installed skill
npx -y codex-claude-council ask "..." --skill llm-council,caveman # with several
npx -y codex-claude-council ask "..." --html council.html # also save the discussion as a page to share
npx -y codex-claude-council ask "..." --claude-session <uuid> --codex-session <id> # your sessions
npx -y codex-claude-council codex "..." --session <id> # your Codex session
ターミナルでは、--workspace、--no-workspace、またはセッション ID を渡さない限り、両方のモデルはコマンドを実行した Git リポジトリ(ある場合)で作業します。セッション ID を渡さない限り、各コマンドの実行ごとに新しいセッションのペアが作成されます。質問は標準入力からパイプで渡すこともできます。コマンドを短くするには、グローバルにインストールし(npm install -g codex-claude-council)、codex-claude-council ask "..." を使用します。
設定
npx -y codex-claude-council config --init
これにより、~/.codex-claude-council/config.json が作成されます。設定は呼び出しのたびに再読み込みされるため、編集内容はすぐに反映されます。
{
"timeout_seconds": 600,
"skill_timeout_seconds": 1800,
"tool_wait_seconds": 50,
"synthesizer": "claude",
"max_rounds": 5,
"web_search": true,
"network": false,
"network_domains": [],
"allow_api_key_auth": false,
"codex": { "command": null, "model": null, "effort": "high" },
"claude": { "command": null, "model": null, "effort": "high" }
}
| 設定 | 説明 |
|---|---|
timeout_seconds | 各 CLI 呼び出しの制限時間 |
skill_timeout_seconds | スキル使用時の各 CLI 呼び出し、および council_join でのホストの各ターンの制限時間(デフォルトは 1800) |
tool_wait_seconds | 1 回のツール呼び出しが「まだ処理中」と job_id を返すまで待機する時間(一部のアプリの 60 秒制限未満となるよう、デフォルトは 50)。0 にすると、回答の準備ができるまで待機します |
synthesizer | 最終回答の草案を作成するモデル:claude(デフォルト)または codex(ChatGPT)。ホストが草案を作成する council_join では使用されません |
max_rounds | 両者が合意するまでのやり取りの回数:5(デフォルト)、制限なしの場合は 0、1 回の場合は null |
web_search | モデルがウェブを検索してページを読み取れるかどうか:true(デフォルト)または false |
network | Codex のコマンドがネットワークにアクセスできるかどうか。ディスクへのアクセスは読み取り専用です:false(デフォルト)または true |
network_domains | network と併用し、Codex が接続できるドメインを指定します(例:["api.github.com", "*.example.com"])。[](デフォルト)ではすべてのドメインが許可されます |
codex.model、claude.model | デフォルトのモデル。null の場合は CLI 自体のデフォルトが使われます |
codex.effort、claude.effort | デフォルトの effort |
codex.command、claude.command | CLI が自動的に見つからない場合に指定する CLI のフルパス |
allow_api_key_auth | true にすると、API キーでサインインした CLI を許可します(トークンごとに課金) |
別の設定ファイルを使用するには、COUNCIL_CONFIG を設定します。インストーラーは、sixel 画像を表示するターミナルにプラグインのアイコンを表示します。アイコンはターミナルに表示を依頼するため、ssh 経由でも動作します。常に表示するには COUNCIL_BANNER=image、表示しないには COUNCIL_BANNER=text を設定します。
セキュリティとプライバシー
- すべてお使いのコンピューター上で実行されます。 質問は、ご自身のアカウントを使い、公式 CLI を通じて OpenAI と Anthropic に送られます。
- メンバーがファイルを変更することはありません。
- Codex は、オペレーティングシステムによって強制される読み取り専用サンドボックスで
codex execを実行し、approval_policyはneverに設定されます。どちらもコマンドラインで指定されるため、config.tomlの設定より優先されます。つまり、フルアクセスを許可する設定であっても、読み取り専用のままです。 - Claude Code は計画モードで実行されます。読み取り、検索、および読み取り専用だと判断したコマンドの実行を行います。承認する人がいないため、編集、書き込み、その他のコマンドはすべて拒否されます。計画モードは Claude Code 独自の権限ガードであり、オペレーティングシステムのサンドボックスではありません。書き込めるファイルは
~/.claude/plans/内の計画ファイルだけです。 council_joinでは、ホストはご自身のセッションであり、独自の権限を維持します。ファイルを変更しないよう依頼されるだけです。
- Codex は、オペレーティングシステムによって強制される読み取り専用サンドボックスで
- ご自身の環境設定が適用されます。 メンバーは、ご自身のスキル、プラグイン、MCP サーバー、フック、
CLAUDE.md/AGENTS.mdおよび権限ルールを使って実行されます。このプラグインはメンバー内では無効になるため、メンバーが別の評議会を開始することはありません。MCP ツールはそれぞれ独自のプロセスで実行されます。計画モードでは変更を行う Claude のツールは拒否されますが、Codex は各サーバー独自の承認設定に従うため、変更可能な MCP サーバーを使う場合はご注意ください。 - 読み取った内容はモデルプロバイダーに送信されます。 どちらのモデルが読み取ることを選んだ内容も、貼り付けた場合と同様に OpenAI または Anthropic に送られます。通常のセッションと同じく、両方のモデルはプロジェクト外のファイルも読み取れます。Codex の読み取り専用サンドボックスではディスク全体の読み取りが許可され、計画モードではどこからでも読み取り専用コマンドを実行できます。
workspaceを指定しない場合、メンバーは空のフォルダーで起動し、質問に基づいて作業するよう指示されます。 - ウェブアクセス。 Codex のウェブ検索は OpenAI 側で実行されます(
networkを有効にしない限り、サンドボックス内のコマンドにはネットワークアクセスがありません)。Claude はページの検索と取得ができ、読み取り専用コマンドからネットワークにアクセスできます。さらにworkspaceを指定した場合、プロジェクト内のテキストによるモデルへの指示(プロンプトインジェクション)によって、たとえば取得する URL にプロジェクトの内容を含めてウェブサイトに送信させることが、原理上は可能です。機密性の高いプロジェクトでは、ウェブアクセスを無効にしてください。 - セッション。 メンバーのセッションは、ほかのセッションと同様に CLI に保存されるため、そのフォルダーの
claude --resumeおよびcodex resumeに表示されます。ID で渡したセッションはそのまま継続され、評議会でのやり取りがそのセッションに追加されます。 - API キーではなくサブスクリプション。 CLI の起動前に、API キーの環境変数は削除されます。
allow_api_key_authを設定しない限り、Codex では ChatGPT に、Claude Code では Claude のサブスクリプションにサインインする必要があります。 - プライバシーポリシー: PRIVACY.md。このプラグインにサーバーやテレメトリはありません。OpenAI と Anthropic に送られる内容は、ご自身のアカウントを使い、CLI を通じて送信されます。
- プラグイン自体は、お使いのユーザー権限で実行されます。
src/にある、依存関係のない約 1,700 行の JavaScript です。ご希望であれば、インストール前にお読みください。
トラブルシューティング
doctor を実行します。Node.js、両方の CLI、サインイン状態、有効な設定を確認します。
npx -y codex-claude-council doctor
- 「The council needs … signed in」:何も送信されていません。問題のある各 CLI と対処方法がメッセージに表示されます。
codex login(Sign in with ChatGPT を選択)および/またはclaude auth loginを実行してください。 - 「usage limit」:ChatGPT または Claude のプランが上限に達しました。リセットを待つか、負荷を下げてください。
- 「timed out」:
timeout_seconds(スキルを使う場合はskill_timeout_seconds)を増やすか、負荷を下げてください。 - ツール呼び出しが約 60 秒後に終了する:0.6.2 以降に更新してください。このバージョンではすべてのツールが約 50 秒以内に応答し、ホストは
council_resultをポーリングします。アプリにこのような制限がない場合は、"tool_wait_seconds": 0を設定すると、1 回の呼び出しで待機します。 - 「no … session named …」:その名前のセッションがありません。
claude --resume/codex resume --allで確認するか、/renameでセッションの名前を変更するか、/statusに表示される ID を渡してください。 - 「Waiting for the … session」:別の council または質問がそのセッションを使用しています。各セッションは一度に 1 つだけ実行できるため、空き次第この処理が開始されます。メッセージに返信待ちの
council_joinジョブが表示される場合、そのジョブはホストが応答するまで(デフォルトでは 30 分、最大skill_timeout_secondsまで)セッションを保持します。council_turnで返信を送るか、council_cancelでそのジョブを停止してください。 - 「… is not waiting for your reply now」(
council_join):もう一方のモデルは引き続き処理中です。ホストはその ID を指定してcouncil_resultを呼び出し、次のターンを取得してください。 skill "…" is not installed:skill addでインストールし、アプリを再起動してツール一覧に表示してください。- ツールが表示されない:インストール後、アプリを完全に終了してから再度開いてください。デスクトップアプリでは、Settings → Plugins でプラグインがインストールされ、有効になっていることを確認してください。
- macOS のデスクトップアプリで
nodeが見つからない:GUI アプリはシェルのプロファイルを読み込まないため、nvm でインストールした Node が認識されないことがあります。nodejs.org または Homebrew から Node をインストールしてください。 - CLI が見つからない:
codex.command/claude.commandにフルパスを設定してください。 - 「unknown option」/「unexpected argument」:CLI が古すぎます。
claude updateまたはnpm install -g @openai/codex@latestを実行して更新してください。 - Windows:「Access is denied (os error 5)」と表示され、インストールまたは更新できない:更新を参照してください。
アンインストール
npx -y codex-claude-council uninstall
これにより、Claude Code と Codex からプラグインが、Claude Desktop のチャット項目からエントリが削除されます。設定ファイルとインストール済みのスキルは保持されます。デスクトップアプリでは、Settings → Plugins からアンインストールしてください。
開発
git clone https://github.com/hamza-aziz-ai/codex-claude-council.git
cd codex-claude-council
npm test
テストでは偽の codex/claude 実行ファイルを使うため、モデルへの呼び出しは発生しません。CI では Windows、macOS、Linux でテストが実行されます。ローカルのチェックアウトを試すには、そのパスをマーケットプレイスとして使用してください:claude plugin marketplace add ./codex-claude-council または codex plugin marketplace add ./codex-claude-council。
免責事項
OpenAI または Anthropic との提携関係はなく、両社からの承認も受けていません。Codex、ChatGPT、Claude、Claude Code は、それぞれの所有者の商標です。プラグインのアイコンおよび共有ディスカッションページにある OpenAI と Claude のロゴ(@lobehub/icons 提供)は、プラグインが実行する 2 つの CLI を識別するためだけに使用されています。インストーラーは chafa を使ってアイコンを描画します。各 CLI の使用には、各プロバイダーの規約およびプランの上限が適用されます。
ライセンス
MIT © Hamza Aziz
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。