Atlas / MCP servers / automatis-tools / agents-can-communicate

agents-can-communicateBLOCK

mcp/automatis-tools/agents-can-communicate

Messages between AI coding sessions in different vendors' clients, such as Claude Code and Codex. Local, open source, no lead agent.

Verdict
BLOCK
Grade
F
Trust score
45 /100
Exposed tools
11 9r · 2w · 0d
Transport
—
License
MIT
Stars
130
01

Overview

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

The message your clients can’t send each other.

Claude Code can message your other Claude Code sessions, and Codex can queue a message for another Codex session. Neither client offers a way to message the other’s sessions. ACC carries questions, reviews and handoffs between sessions in different vendors’ clients, on your machine.

You open each client normally and choose its work. Every session keeps its own model, conversation, and permissions. Coordination runs locally, with no lead agent managing the others. If all your sessions run in one of these two clients, try its own messaging first.

flowchart TB
you["You choose the tools and work"]
codex["CodexFeature A"]
claude["Claude CodeFeature B"]
antigravity["Antigravity CLIFeature C"]
acc["Communication via ACC"]

you -.-> codex
you -.-> claude
you -.-> antigravity
codex  acc
claude  acc
antigravity  acc

subgraph handoff["When you switch clients"]
direction LR
current["Claude Codesession"] --> saved["HandoffDone · DecisionsNext steps"]
saved --> next["Codexsession"]
end
acc ~~~ handoff

classDef human fill:#f1f5f9,stroke:#8593a3,color:#202a35
classDef session fill:#fff,stroke:#ced4d9,color:#202a35
classDef shared fill:#e8edff,stroke:#385cde,color:#202a35
class you human
class codex,claude,antigravity,current,next session
class acc,saved shared
style handoff fill:transparent,stroke:#ced4d9
linkStyle 3,4,5,6,7 stroke:#385cde,stroke-width:2px

When ACC helps

  • Get a second opinion from another vendor’s model. Ask a Codex session to review a change

your Claude Code session just made, and send its findings back to the session that wrote the code.

  • Bring parallel features together. Let sessions in different clients ask each other about

a shared API before they build around different assumptions

Read from source at commit eed167b070a1OBSERVED · 2026-10-11
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 storage-filesystem --env ANTIGRAVITY_CSRF_TOKEN=${ANTIGRAVITY_CSRF_TOKEN} --env EXPECTED_TOKEN=${EXPECTED_TOKEN} -- npx -y @agents-can-communicate/[email protected]
claude-desktop
{
  "mcpServers": {
    "storage-filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@agents-can-communicate/[email protected]"
      ],
      "env": {
        "ANTIGRAVITY_CSRF_TOKEN": "${ANTIGRAVITY_CSRF_TOKEN}",
        "EXPECTED_TOKEN": "${EXPECTED_TOKEN}"
      }
    }
  }
}
03

Exposed tools (11)

9 read · 2 write · 0 destructive.

ToolRiskDescription
acc_ackreadAcknowledge receipt without accepting work or writing an answer.
acc_claimreadAcquire one resource or atomically acquire a nonempty resources array; renew by claimId.
acc_finishreadRecord a handoff describing what was completed and what remains, and
acc_inboxreadList a bounded page of unresolved message summaries, newest first, without
acc_messagereadDurably record a typed message to other participants. ${OUTGOING} ${MUTATION_POLL}
acc_releasereadRelease only claims this session owns, with exactly one of claimId, claimIds, resource,
acc_replyreadReply to one addressed message and acknowledge the original in the same
acc_requestreadAsk another agent to do something in a reply-required message. Use this
acc_statusreadRead who is here, current intents and claims, the workspace
acc_syncwriteRead coordination state for this workspace: roster, attention items, and
acc_workwritePublish what this session is doing now as one concise Intent. Intent is
04

Trust audit

BLOCKgrade F · trust 45/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 codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

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

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/cli/src/git-probe.mjs:30
const commonDir = await exec(cwd, ["rev-parse", "--path-format=absolute",
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/cli/src/git-probe.mjs:33
const worktreeRoot = await exec(cwd, ["rev-parse", "--show-toplevel"]);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/cli/src/git-probe.mjs:36
const branch = await exec(cwd, ["branch", "--show-current"]).catch(() => "");
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/cli/src/git-probe.mjs:37
const head = await exec(cwd, ["rev-parse", "HEAD"]).catch(() => "");
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/cli/src/git-probe.mjs:38
const remote = await exec(cwd, ["remote", "get-url", "origin"]).catch(() => "");
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
packages/adapter-antigravity/plugin/skills/acc/SKILL.md:45
peer's ID, read runtime bindings, or improvise credentials.
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
packages/adapter-claude-code/plugin/skills/acc/SKILL.md:45
peer's ID, read runtime bindings, or improvise credentials.
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
packages/adapter-codex/plugin/skills/acc/SKILL.md:64
peer's ID, read runtime bindings, or improvise credentials.
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
packages/adapter-gemini-cli/extension/skills/acc/SKILL.md:45
peer's ID, read runtime bindings, or improvise credentials.
Why it matters. asks the agent to read credentials
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
packages/adapter-antigravity/src/desktop-allow-rule.mjs:34
value = JSON.parse(text.replace(/^/, ""));
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
tests/acceptance/real-claude-live-stub.test.mjs:47
const apiKey = "sk-ant-stub-key-0123456789abcdefghij";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/adapter-antigravity/test/desktop-delivery.test.mjs:16
const TOKEN = "c740d75d-0000-4b4d-bf37-secret-token";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/adapter-claude-code/test/inbox-delivery-windows.test.mjs:19
const TOKEN = "0123456789abcdef0123456789abcdef";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/adapter-claude-code/test/inbox-registry-windows.test.mjs:18
const TOKEN = "0123456789abcdef0123456789abcdef";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/storage-filesystem/test/writer-mutex-reclamation.test.mjs:85
token: "delayed-legacy-token",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/acceptance/real-claude-live-stub.test.mjs:47
const apiKey = "sk-ant-stub-key-0123456789abcdefghij";
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/adapter-codex/src/ws-json-rpc.mjs:63
return createHash("sha1").update(`${key}${GUID}`).digest("base64");
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
scripts/spikes/ws-unix-peer.mjs:63
return createHash("sha1").update(`${key}${GUID}`).digest("base64");
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
packages/adapter-claude-code/test/inbox-observed-directories.test.mjs:79
f.place("w1", name(), JSON.stringify(record("/home/me/.ssh/agent.sock")));
Why it matters. touches a credential store
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
bin/entrypoints/acc.mjs:50
await readFile(new URL("../../package.json", import.meta.url), "utf8")).version,
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/adapter-antigravity/test/allow-rule-install.test.mjs:7
import { NO_ALLOW_RULE_ON_WINDOWS } from "../../../tests/helpers/platform-scope.mjs";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/adapter-antigravity/test/allow-rule-report.test.mjs:8
import { NO_ALLOW_RULE_ON_WINDOWS } from "../../../tests/helpers/platform-scope.mjs";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/adapter-antigravity/test/desktop-allow-rule.test.mjs:9
import { NO_ALLOW_RULE_ON_WINDOWS } from "../../../tests/helpers/platform-scope.mjs";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/adapter-antigravity/test/desktop-delivery.test.mjs:97
assert.equal(await reason({ event: { sessionId: "../../etc" } }), "handshake_failed");
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/adapter-antigravity/test/client-process.test.mjs:14
+ "--enable_sidecars --host_bridge_url=http://127.0.0.1:55326 --host_bridge_token=<bridge>";

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha eed167b070a1full audit observations/trust-audit/mcp-server/automatis-tools__agents-can-communicate.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-11eed167b070a1BLOCKF45first audit
06

Questions

What is the agents-can-communicate MCP server?

Messages between AI coding sessions in different vendors' clients, such as Claude Code and Codex. Local, open source, no lead agent.

What tools does agents-can-communicate expose?

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

Is agents-can-communicate safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (45/100) and found 9 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 agents-can-communicate need?

It reads ANTIGRAVITY_CSRF_TOKEN and EXPECTED_TOKEN 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 (eed167b070a1), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement