Atlas / MCP servers / madappgang / claudish

claudishBLOCK

mcp/madappgang/claudish

Claude Code. Any Model. The most powerful AI coding agent now speaks every language.

Verdict
BLOCK
Grade
F
Trust score
31 /100
Exposed tools
63 52r · 11w · 0d
Transport
stdio
License
—
Stars
1,005
01

Overview

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

Claude Code. Any Model.

[](https://www.npmjs.com/package/claudish) [](LICENSE) [](https://claude.ai/claude-code)

Use your existing AI subscriptions with Claude Code. Works with Anthropic Max, Gemini Advanced, ChatGPT Plus/Codex, Kimi, GLM, OllamaCloud — plus 580+ models via OpenRouter and local models for complete privacy.

Website · Documentation · Report Bug

Claudish (Claude-ish) is a CLI tool that allows you to run Claude Code with any AI model by proxying requests through a local Anthropic API-compatible server.

Supported Providers:

  • Cloud: OpenRouter (580+ models), Google Gemini, OpenAI, MiniMax, Kimi, GLM, Z.AI, Sakana Fugu, OllamaCloud, OpenCode Zen
  • Local: Ollama, LM Studio, vLLM, MLX
  • Enterprise: Vertex AI (Google Cloud)

Use Your Existing AI Subscriptions

Stop paying for multiple AI subscriptions. Claudish lets you use subscriptions you already have with Claude Code's powerful interface:

Read from source at commit 86d24a12d744OBSERVED · 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 magmux-linux-x64 --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env ANTHROPIC_AUTH_TOKEN=${ANTHROPIC_AUTH_TOKEN} --env CLAUDE_CODE_MAX_CONTEXT_TOKENS=${CLAUDE_CODE_MAX_CONTEXT_TOKENS} --env CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN} -- npx -y @claudish/[email protected]
claude-desktop
{
  "mcpServers": {
    "magmux-linux-x64": {
      "command": "npx",
      "args": [
        "-y",
        "@claudish/[email protected]"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "ANTHROPIC_AUTH_TOKEN": "${ANTHROPIC_AUTH_TOKEN}",
        "CLAUDE_CODE_MAX_CONTEXT_TOKENS": "${CLAUDE_CODE_MAX_CONTEXT_TOKENS}",
        "CLAUDE_CODE_OAUTH_TOKEN": "${CLAUDE_CODE_OAUTH_TOKEN}"
      }
    }
  }
}
03

Exposed tools (63)

52 read · 11 write · 0 destructive.

ToolRiskDescription
ArtifactreadQuery a collection.
BashwriteRun a shell command.
EditwriteEdit a file
ExitPlanModereadoriginal
GPT-5read
HaikureadFast & cheap, used for simple tasks
MistralreadDirect API
OllamaCloudreadCloud models
OpusreadMost capable, used for complex reasoning
OtherToolreadother
Readreadd
SonnetreadBalanced, used for general tasks
SubagentreadUsed for spawned sub-agents
TargetToolreadclaude
TaskOutputreadoriginal TaskOutput description
WebSearchreadoriginal WebSearch description
WritewriteWrite a file
Z.AIreadDirect API
advisorreadstartup probe
cancel_sessionreadCancel a session. Returns once its state is CANCELLED ({session_id, state, changed}); the
capture_sessionreadRead a session
channel_sleepreadSleeps ${SLEEP_MS}ms emitting notifications/claude/channel every ${TICK_MS}ms, then returns
compare_modelswriteRun the same prompt through multiple models and compare responses
create_sessionwriteCreate a new claudish proxy session for an external model: an interactive Claude Code running
defaultreadDefault profile - shows model selector when no model specified
first-skillreadThe real listed skill
get_diagnosticsreadExplain what a channel session actually did — its final screen, upstream error bodies,
get_outputreadGet a session
get_weatherreadGet current weather for a city
imagegenreadGenerate images
kimi-k3reada model
list_filesreadList files in a directory
list_modelsreadList recommended models for coding tasks
list_sessionsreadList channel sessions: {contract_version, capabilities, sessions}. Optionally include
llamaread
mread
mcp__browser-use__browser_clickreadClick an element
mcp__claudish__run_promptwriteRead a prompt and run it
mcp__plugin_claudish__list_modelsreadList recommended models
preflightreadDIAGNOSTIC. For a list of models, report which provider would serve each,
probe-log.jsonlwriteFull diagnostic log for this probe run
probe_elicitreadAsks the human a question via MCP elicitation and reports their answer.
probe_pingreadReturns
probe_progressreadEmits 3 notifications/progress over ~4s then returns. Reports whether the
probe_resource_linkreadReturns a resource_link content block pointing at a real file.
probe_resource_urireadReturns a resource_link using a CUSTOM SCHEME uri (claudish://...) rather than file://.
probe_structuredreadReturns structuredContent validated against an outputSchema.
progress_sleepreadSleeps ${SLEEP_MS}ms emitting notifications/progress every ${TICK_MS}ms, then returns
query_rowsreadQuery rows from a collection. Each where clause is [field, operator, value].
read_filereadRead a file from disk
release-notes-writerreadDraft release notes
report_errorreadReport a claudish error to developers. IMPORTANT: Ask the user for consent BEFORE calling this tool. Show them what data will be sent (sanitized). All data is anonymized: API keys, user paths, and emails are stripped. Set auto_send=true to suggest the user enables automatic future reporting.
run_promptwriteRun a prompt through any model — supports all providers (Kimi, GLM, Qwen, MiniMax, Gemini, GPT, Grok, etc.) with auto-routing, fallback chains, and custom routing rules.
search_modelsreadSearch OpenRouter
send_inputwriteSend a prompt to a session. Accepted in every non-terminal state and queued until the
silent_sleepreadSleeps ${SLEEP_MS}ms sending nothing at all, then returns
simple_pingreadReturns
slow_ping_with_progressreadEmits 2 notifications/progress then returns. Used to test whether
slow_with_many_progressreadRuns for ~10 seconds, emitting 5 distinct notifications/progress along the way.
start_mock_sessionwriteStart a mock Claudish session that emits a scripted sequence of channel notifications
teamwriteRun AI models on a task with anonymized outputs and optional blind judging. Every
team-session-42-statusreadDiagnostic status for team session 42
test_toolreadA test tool.
04

Trust audit

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

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

What the source does

Filesystem
declared (8 observation(s))
Network
declared (9 observation(s))
Shell
declared (5 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/1password-sdk/SKILL.md:4
How to load secrets and environment variables from 1Password programmatically
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/1password-sdk/SKILL.md:6
whenever code needs to read a 1Password secret, resolve an op:// reference,
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/1password-sdk/SKILL.md:8
(e.g. to import API keys), or read a 1Password Environment — even if the user
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/1password-sdk/SKILL.md:99
## Read a 1Password Environment (beta)
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/1password-sdk/SKILL.md:153
| Read a 1Password Environment | ✅ beta | `environments.getVariables`, **beta SDK only** |
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.persistence · CWE-94, CWE-1427
packages/cli/skills/claudish-usage/SKILL.md:788
# Or add to ~/.zshrc or ~/.bashrc
Why it matters. instructs the agent to persist itself in the user's environment
HIGHPrompt injection · prompt.persistence · CWE-94, CWE-1427
skills/claudish-usage/SKILL.md:788
# Or add to ~/.zshrc or ~/.bashrc
Why it matters. instructs the agent to persist itself in the user's environment
MEDIUMInventory / provenance · inv.binary · CWE-1104
packages/cli/src/test-fixtures/devin/GetCliModelConfigs.res.bin
GetCliModelConfigs.res.bin
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/macos-bridge/src/server.ts:1082
console.log(`CLAUDISH_BRIDGE_TOKEN=${token}`);
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/cli/src/pane/test-fixtures/transcripts/local-commands.jsonl:19
{"parentUuid":"07a64090-2c8c-4bb6-b3fd-62d3d58ab4d0","isSidechain":false,"message":{"model":"claude-haiku-4-5-20251001","id":"msg_011Cfkjq9jPRAVho5fCnu3G2","type":"message","role":"assistant","content
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/cli/src/pane/test-fixtures/transcripts/local-commands.jsonl:61
{"parentUuid":"52830a12-2ce9-45d2-8124-74035065b77c","isSidechain":false,"message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CfkjsFg8SCL6HCEMSum2M","type":"message","role":"assistant","content
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/cli/src/test-fixtures/sse-responses/gemini-3.1-pro-or-maxtokens-empty.sse:19
data: {"id":"gen-1786019228-deYyCMSICXzLSBz3AdvZ","object":"chat.completion.chunk","created":1786019228,"model":"google/gemini-3.1-pro-preview","provider":"Google","choices":[{"index":0,"delta":{"cont
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/cli/src/test-fixtures/sse-responses/gemini-3.1-pro-or-maxtokens-truncated.sse:15
data: {"id":"gen-1786019222-rxepGMSzUjKHovdSBvao","object":"chat.completion.chunk","created":1786019222,"model":"google/gemini-3.1-pro-preview","provider":"Google","choices":[{"index":0,"delta":{"cont
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/cli/src/test-fixtures/sse-responses/gemini-3.6-flash-antigravity-banana-answer.sse:3
data: {"response": {"candidates": [{"content": {"role": "model","parts": [{"thoughtSignature": "Es0BCsoBARFNMg9/wldhnjsZxXVZzC1qMQG+18DJxWFekbs56EKE3hHRZlrCGfsHLOzG7AedBIwXsd5Jr51YSF3BmlGdcidD+rqYRdHC
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
packages/cli/src/redact.test.ts:10
["Anthropic", "sk-ant-api03-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"],
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/cli/src/auth/credentials/types.test.ts:6
const secret = "AIzaSyD-1234567890abcdefghijklmnopqrs";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/cli/src/auth/credentials/types.test.ts:14
const secret = "eyJhbGciOiJIUzI1NiJ9.fake-token-signature";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/cli/src/channel/session-manager.test.ts:702
const secret = "redaction-probe-not-a-real-credential"; // what the fake's exit_secret prints
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/cli/src/providers/custom-endpoints-loader.test.ts:400
apiKey: "sk-attacker-declared-key",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/cli/src/providers/devin/devin-request.test.ts:16
const metadata = { apiKey: "recognisable-fake-devin-key" };
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
packages/cli/src/redact.test.ts:13
["GitHub personal access token", "ghp_abcdefghijklmnopqrstuvwxyz0123456789"],
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
packages/cli/src/redact.test.ts:14
["GitHub OAuth token", "gho_abcdefghijklmnopqrstuvwxyz0123456789"],
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
packages/cli/src/redact.test.ts:15
["GitHub server token", "ghs_abcdefghijklmnopqrstuvwxyz0123456789"],
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
packages/cli/src/redact.test.ts:17
["GitHub refresh token", "ghr_abcdefghijklmnopqrstuvwxyz0123456789"],
LOWInventory / provenance · inv.no_license · CWE-1104
Why it matters. no LICENSE file and no repo licence
Fix. add a licence

Gates applied: no_behavioural_pass, no_license.

Audited 2026-10-12 · audit v0.4.1 · source sha 86d24a12d744full audit observations/trust-audit/mcp-server/madappgang__claudish.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-1286d24a12d744BLOCKF31first audit
06

Questions

What is the claudish MCP server?

Claude Code. Any Model. The most powerful AI coding agent now speaks every language.

What tools does claudish expose?

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

Is claudish safe to connect to an agent?

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

What credentials does claudish need?

It reads ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, CLAUDE_CODE_MAX_CONTEXT_TOKENS, CLAUDE_CODE_OAUTH_TOKEN, CLAUDISH_DISABLE_KEYCHAIN, CLAUDISH_KEYCHAIN_FILE, CLAUDISH_TEST_PROVIDERS_KEY, CLAUDISH_TOKEN_FILE, CUSTOM_KEYLESS_COMPLEX_REGRESSION_KEY, CUSTOM_KEYLESS_ENV_REGRESSION_KEY, CUSTOM_KEYLESS_SIMPLE_REGRESSION_KEY and CUSTOM_VAR_EP_KEY 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 does claudish run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @claudish/magmux-linux-x64 at 6.7.0.

How current is this page?

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

Advertisement