Dev & Engineering claude-code-pluginmulti-provider-queriesopenrouterollamatmuxdebate-modecodex-cliresponse-synthesis

Claude Council

Puts the same question to multiple AI coding agents in parallel, shows their answers side by side with a synthesis, so one model's bias doesn't drive your key decisions.

FollowAgents review · FARS-2.1
Use with care
74/ 100 5-point scale 3.7 / 5
1 2 3 4 5 6
1Trust19 / 29 · 3.3/5

Data-flow disclosure is excellent: OpenRouter explicitly described as a two-hop disclosure, cache stores full prompts in plaintext (with a dropped .gitignore), image bytes excluded from cache/transcripts, /claude-council:advise shows the digest and asks before sending, auto-context capped at 5 files/~10k tokens. Deductions: auto-context is on by default and silently ships source files to third-party APIs; plaintext cache persists on local disk; no documented undo for exports or background-job records; publisher identity unverified. CI pins actions by digest and checksums shellcheck, which supports supply-chain care.

2Reliability9 / 14 · 3.2/5

README is internally consistent and detailed (CLI-over-API shadowing, fallbacks, cache-key rules). External API/CLI dependencies have discovery and fallback paths (local council fallback, vision-sibling fallback labeled in output). Deductions: only README plus CI/test files were supplied; the core scripts' actual error handling cannot be statically verified, and failure messages are only partially evidenced (stderr role notes, failed job marking).

3Adaptability15 / 18 · 4.2/5

Capability boundaries are a standout: the 'Stated vs Assumed' section warns that providers reason from descriptions only and that unanimity can rest on a shared false premise; the --local section honestly flags same-model agreement as non-corroboration. Environment fit is strong (bash 3.2 target, tmux, Windows Git Bash shards, documented install traps). Deductions: the proactive agent's trigger conditions are broad and may be noisy; described scenarios lean toward individual-developer workflows.

4Convention14 / 18 · 3.9/5

Clear information architecture (Quick start/Usage/Configuration/Reference/Development), install notes that call out two genuine traps, honest and thorough known-limitations text, complete MIT license. Deductions: no CHANGELOG or version record visible; positional role binding and OPENROUTER_MODELS ordering fragility is acknowledged but is a real instability; maintenance responsibility rests only on a SECURITY.md reply promise and a stale workflow, with no maintainer roster or roadmap.

5Effectiveness13 / 13 · 5.0/5

Strong output usability: side-by-side panes, synthesis separating consensus from divergence, quiet/export/async modes. Marginal value is clear — cross-vendor bias correction with duplication-aware synthesis. Cost/benefit is transparent (standard vs agent-mode cost/latency table, caching to save spend). Deductions: inherent multi-provider cost per query, and debate round-2 rebuttals largely uncached.

6Verifiability4 / 8 · 2.5/5

README claims are specific and traceable to features (cache keys, role-binding rules, byte/turn counts), but a static review can only check documentation self-consistency, not the implementation — hence the deduction; the only corroborating files are CI workflows and a test runner, which cannot confirm the many behavioral claims; the product itself separates fact from inference via OBSERVED/NOT VERIFIED labels, which is commendable, but reviewer-level claim/implementation separation scores only mid-range.

Evidence confidence: Low Reviewed Sep 07, 2026 Reviewed revision c78768ba3e75
Before you use it
  • Auto-context is on by default: ordinary questions may silently send source files to third-party APIs; use --no-auto-context for sensitive codebases.
  • Cache entries and council-*.md exports store full prompts (including file contents) in plaintext on local disk; clean up before sharing or mirroring workspaces.
  • Prompts via OpenRouter pass through both the router and the upstream provider — a two-hop disclosure; teams with data-residency requirements should avoid that seat.
  • Positional --roles and OPENROUTER_MODELS ordering are coupled; adding or removing providers silently shifts role assignments — prefer explicit provider=role pairs.
  • In --local mode all members are Claude, so their agreement is not cross-vendor corroboration; do not treat it as independent verification.
  • Static review saw no CHANGELOG and no core script sources; verify versioning and actual error handling before adoption.
Review evidence [1][2][3][4][5][6]
See the full review method →

What does this agent do, and when should you use it?

claude-council is a Claude Code plugin that sends one question simultaneously to Gemini, OpenAI, Grok, Perplexity, Kimi, and any model OpenRouter routes to — plus subscription-authenticated codex, antigravity (agy), grok, and kimi CLIs and a local ollama model — via slash commands like /claude-council:ask. It renders answers side by side with vendor-colored banners and produces a synthesis that separates consensus from divergence; when everyone agrees, it names the assumption the agreement rests on. Inside tmux, results stream into a live side pane. Options include role assignment, two-round debate mode, --agents deep analysis, --async background jobs, response caching, and Markdown export. It ships as a Claude Code plugin (installed via hex/claude-marketplace) and also exposes scripts/query-council.sh for direct automation, requiring curl and jq, under the MIT license.

Once installed, /claude-council:ask discovers available providers (API keys, codex/agy/grok/kimi CLIs on PATH, or local ollama), automatically injects up to 5 relevant files (~10k token cap) or attaches context via --file/--image, then queries APIs in parallel with curl or invokes the CLIs. Output is a JSON structure (metadata + round1/round2) rendered in a streaming tmux pane with vendor-colored banners, timing, and model names, followed by a synthesis covering divergences, consensus and its premises — with verifiable claims labeled OBSERVED or NOT VERIFIED. Optional layers: --roles (security/performance/devil, etc.), --debate (a second rebuttal round), --agents (one Claude analyst per provider, ~4x cost and 15-25s extra latency), --local (a council of blind Claude subagents when no keys exist), --async background jobs (fetched via /claude-council:result), response caching (default 1-hour TTL), --output Markdown export, and an opt-in stop-gate where a second model reviews your uncommitted git diff before Claude ends its turn.

  1. An architect weighing UUID vs BIGINT primary keys or REST vs GraphQL who wants cross-vendor checks instead of a single model's bias
  2. An engineer stuck debugging dead ends — the proactive council-advisor agent suggests convening the council after repeated failed attempts
  3. Security reviews via the --roles=security,devil,compliance preset, with different models playing auditor, challenger, and compliance officer
  4. Users of reasoning or deep-research models that take minutes, using --async to detach the query and /claude-council:result to fetch it later
  5. Privacy-conscious or budget-limited local developers: --local for a keyless Claude-only council, or ollama so answers never leave the machine
  6. Teams needing an audit trail of AI-assisted decisions, exporting Q&A and synthesis to Markdown with --output

What are this agent's strengths and limitations?

Pros
  • Cross-vendor verification is the core differentiator: roughly ten seating options across API keys, four subscription CLIs, and local ollama, with the openrouter seat defaulting to an Anthropic Claude model so the council hears the vendor it otherwise lacks
  • Honest synthesis of uncertainty: it separates agreement from divergence, names the premise behind unanimous answers, and labels claims OBSERVED vs NOT VERIFIED to guard against confident unanimity on a wrong assumption
  • Rich decision-grade mechanisms: 8 roles (security, devil, etc.), two-round debate mode, --agents structured deep analysis with resumable runs, and a keyless local council mode
  • Strong engineering details: separate response and model-availability caches, automatic 8x token-limit bump for reasoning models, automatic CLI-to-API fallback, and a tmux streaming pane with per-provider retry and adaptive light/dark theming
Limitations
  • Tightly coupled to the Claude Code ecosystem: slash commands, the Workflow tool (required by --agents), and the plugin mechanism are Claude Code-specific; outside it you fall back to bare bash scripts
  • Cost and latency can scale sharply: --agents mode costs ~4x Claude API usage plus 15-25s latency (one measured eight-seat run hit ~456k analyst tokens), and parallel multi-provider queries bill at each provider
  • Privacy requires active management: the cache stores full prompts (including --file contents) in cleartext locally; the openrouter seat discloses twice (to OpenRouter, then the upstream); the stop-gate sends your entire uncommitted diff to an external provider
  • Documented limitations: providers see only a description of your problem, never the system, so a wrong premise yields confident unanimity; a 64KB file has pushed the kimi CLI past fifteen minutes, and CLI providers get a single attempt with no retry

How do you install or deploy this agent?

Recommended — Claude Code plugin marketplace:

/plugin marketplace add hex/claude-marketplace
/plugin install claude-council

Then configure at least one provider, any of these:
export OPENAI_API_KEY="..." (or GEMINI_API_KEY, XAI_API_KEY, PERPLEXITY_API_KEY, KIMI_API_KEY, OPENROUTER_API_KEY); or install the codex / agy (Antigravity) / grok / kimi CLIs to use existing subscription auth with no API key; or run ollama locally.

Requirements: curl and jq; macOS, Linux, or Windows via Git Bash.

Manual (dev/offline only): git clone https://github.com/hex/claude-council.git, then claude --plugin-dir /path/to/claude-council. Do not clone into ~/.claude/plugins/ — that is the managed cache and is never scanned for manually added plugins.

How do you use this agent?

Basic invocation:

/claude-council:ask "Should I use UUID or BIGINT primary keys for a SaaS users table?"

Common variants:

/claude-council:ask --providers=gemini,openai "..."   pick providers
/claude-council:ask --roles=balanced "Review this implementation"   role presets
/claude-council:ask --debate "..."   two-round debate
/claude-council:ask --file=src/auth.ts "..."   attach a file
/claude-council:ask --image=shot.png "..."   attach one image (png/jpg/jpeg/webp/gif, up to 10MB)
/claude-council:ask --quiet "..."   synthesis only
/claude-council:ask --async "..." then /claude-council:result <job-id>   background jobs
/claude-council:status   check configuration and connectivity
/claude-council:advise "..."   send a bounded slice of the current conversation instead

Without Claude Code, run the scripts directly:

bash scripts/query-council.sh --providers=gemini,openai --roles=balanced -- "Review this pattern"

Key environment variables: COUNCIL_PROVIDERS (pin the default roster), COUNCIL_VERBOSITY=brief|standard|detailed, COUNCIL_CACHE_DIR/TTL, and per-provider <PROVIDER>_MODEL overrides.

How does this agent compare with similar options?

Versus simply asking models one at a time inside Claude Code, claude-council's value is parallel querying, side-by-side comparison, and automated synthesis. Versus a single-model second opinion, its multi-vendor seating plus role and debate mechanisms materially reduce single-model bias. If you only need one external perspective, a single API key and a lighter setup suffices; for genuine cross-vendor cross-checking, this plugin is the more complete tool.

FAQ

Can I use it with no API keys?
Yes. Install any of the codex / agy / grok / kimi CLIs for subscription auth (auto-discovered and preferred over their API siblings), or run ollama locally (no key, no network). With neither, --local convenes a council of blind Claude subagents — though the docs warn that same-source agreement is not cross-vendor corroboration.
How do I control costs?
CLI providers and ollama incur no per-call API cost; API queries use a default response cache (1-hour TTL keyed on prompt + provider + model + role); --quiet reduces output but not queries; --agents is the most expensive (~4x usage), and the docs recommend reserving it for high-stakes decisions.
What happens when a provider fails?
API providers retry 429/5xx automatically (default 3 attempts); an unavailable default model is replaced by a verified fallback, noted in the response header; a failing CLI provider with an available API sibling's key falls back automatically; inside tmux you can press r to retry only the failed providers. Timeouts fail fast without retry.
Where does my code and data go?
Auto-context and --file contents are sent to the selected providers with the prompt and stored in cleartext in the local cache dir (which the plugin gitignores); images are not written to cache or export files. The stop-gate sends your full uncommitted diff. ollama and CLI providers keep data local or within their subscription channel; openrouter involves two disclosures (OpenRouter, then the upstream).
Can I use it without Claude Code?
Yes, with reduced functionality. scripts/query-council.sh, check-status.sh, and friends run directly in shell and emit JSON, suitable for CI and automation; but slash commands, the streaming tmux pane, the proactive advisor, and --agents all depend on Claude Code.

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents