Atlas / MCP servers / hamza-aziz-ai / codex-claude-council

codex-claude-councilBLOCK

mcp/hamza-aziz-ai/codex-claude-council

Two AIs. One answer. ChatGPT and Claude discuss with each other until they agree, through your own signed-in CLIs: no API keys. Both read your project (never change it) and search the web. Plugin for Claude Code, Codex, Claude Desktop and the ChatGPT app.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
8 4r · 4w · 0d
Transport
—
License
MIT
Stars
3
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Two AIs. One answer.

Ask ChatGPT (through Codex) and Claude the same question.They discuss with each other, round after round, until they agree on one answer.

Using the subscriptions you already have, in Claude Code · Claude Desktop (Cowork) · Codex · the ChatGPT desktop app · your terminal, on Windows, macOS and Linux.

Quick start · How it works · Use it · Examples · Options · Configure · Troubleshooting

🔍 Both work in your project, in plan modeThey read files, search and run read-only commands such as git log and git diff, but neither can change anything.

Read from source at commit 38067eb41c33OBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add codex-claude-council --env FAKE_CLAUDE_AUTH=${FAKE_CLAUDE_AUTH} --env FAKE_CODEX_AUTH=${FAKE_CODEX_AUTH} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "codex-claude-council": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "FAKE_CLAUDE_AUTH": "${FAKE_CLAUDE_AUTH}",
        "FAKE_CODEX_AUTH": "${FAKE_CODEX_AUTH}"
      }
    }
  }
}
03

Exposed tools (8)

4 read · 4 write · 0 destructive.

ToolRiskDescription
ask_claudereadAsk Claude alone through Claude Code signed in with a Claude subscription. Optional model/effort overrides.
ask_codexreadAsk Codex alone through the Codex CLI signed in with ChatGPT. Optional model/effort overrides.
council_askreadAsk Codex (ChatGPT) and Claude independently; then each replies to the other\
council_cancelwriteStop a council_ask, debate, ask_codex or ask_claude call that is still working in the background.
council_joinreadTake part in the council yourself, in this conversation, with everything you already know, instead of a separate session of your model:
council_turnwriteSend your reply to the council message that council_join, council_turn or council_result gave you, and wait for the next step.
debatewriteRun the council and return JSON with the final answer, whether both models agree with it, both answers, every exchange (each model\
llm-councilwriteRun any question through a council of 5 AI advisors: they debate.
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (3 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (12)

HIGHPrompt injection · prompt.hide_from_user · CWE-94, CWE-1427
skills/codex-claude-council/SKILL.md:59
- Do not start the same question again, and do not tell the user it failed: "still working" is normal. You may briefly say which step it is at.
Why it matters. asks the agent to act without the user's knowledge
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/config.mjs:39
return JSON.parse(text.replace(/^/, ''));
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/install.mjs:146
const config = exists ? JSON.parse(readFileSync(path, 'utf8').replace(/^/, '') || '{}') : {};
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
docs/examples/postgres-or-sqlite.html:42
<div class="hero"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAKACAMAAAA7EzkRAAAAOVBMVEVMaXH////////////////////////////////////////////////////////////////////////VEWhLAAAAEnRSTlMA4Z
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
test/config.test.mjs:28
'{"codex": {"model": "gpt-5.6-sol", "effort": "xhigh"}, "claude": {"model": "opus"}}',
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
CHANGELOG.md:64
- **Plan mode instead of a locked-down sandbox.** Claude Code now runs in plan mode (`--permission-mode plan`) with the user's own setup (skills, plugins, MCP servers, `CLAUDE.md`, permission rules) i
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
README.md:516
- Codex runs `codex exec` in its **read-only sandbox**, enforced by the operating system, with `approval_policy="never"`. Both are set on the command line, which overrides your `config.toml`, so even
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
README.md:276
- **Keep secrets out of the question.** The question is saved in both sessions and sent to both providers. Have the host read a connection string from an environment variable instead.
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
README.md:405
- **Windows:** HTTPS from `curl.exe`, `Invoke-WebRequest` and `git` fails inside Codex's sandbox (Windows' own TLS has no credentials for the sandbox account), while Python and Node work; Codex is tol
Why it matters. asks the agent to read credentials
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:125
| [Claude Code CLI](https://code.claude.com/docs/en/setup), with a Claude Pro, Max, Team or Enterprise plan | macOS / Linux / WSL: `curl -fsSL https://claude.ai/install.sh \| bash`<br>Windows: `irm ht
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:140
curl -fsSL https://raw.githubusercontent.com/hamza-aziz-ai/codex-claude-council/main/install.sh | bash
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:160
curl -fsSL https://raw.githubusercontent.com/hamza-aziz-ai/codex-claude-council/main/install.sh | bash -s -- --claude-desktop

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 38067eb41c33full audit observations/trust-audit/mcp-server/hamza-aziz-ai__codex-claude-council.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1238067eb41c33BLOCKD69first audit
06

Questions

What is the codex-claude-council MCP server?

Two AIs. One answer. ChatGPT and Claude discuss with each other until they agree, through your own signed-in CLIs: no API keys. Both read your project (never change it) and search the web. Plugin for Claude Code, Codex, Claude Desktop and the ChatGPT app.

What tools does codex-claude-council expose?

8 in total: 4 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is codex-claude-council safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.

What credentials does codex-claude-council need?

It reads FAKE_CLAUDE_AUTH and FAKE_CODEX_AUTH from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How current is this page?

The grade is for one exact copy of the source (38067eb41c33), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement