Repository navigation
Releases: automatis-tools/agents-can-communicate
Release list
ACC v0.11.1
ACC 0.11.1 makes hooks fast in large workspaces and on busy machines, and fixes the Claude Code indicator and client lookup on loaded Macs.
- A hook reads each stored record once. Each turn used to read every message and receipt three times and its heartbeat every session: 1.0 s a turn in an ordinary workspace and timeouts in one with 2,234 sessions, after which the turn continued without ACC's context. Measured on a copy of a real data home, the same turns take 0.29–0.41 s (#298, #300).
- The Claude Code indicator no longer prints "could not read this session's state" in every open session on a loaded machine. Each read has five seconds, and only three failed reads in a row show
!(#293). - A session that started without finding its client process finds it on the next prompt, instead of reporting
client_process_unknownwith no live delivery for its whole life (#294). - Commands, indicator reads and message delivery load only the client adapters and modules they use: on windows-latest
acc versionstarts in 89 ms instead of 284 ms, and an indicator read in 143 ms instead of 244 ms (#270, #296).
Node 24 or later is required. Store contract 7 and managed-update protocol 2 are unchanged.
The published archive is the exact verified candidate: agents-can-communicate-0.11.1.tgz, 610,941 bytes, 376 files.
SHA-256: a4f76437f39c15f48585949b0d4e8d4fc8f968ed3b8e6ae57e521d9d81191af3.
SHA-1: 1710e08b72d45c1690d95b19ba84166f1c65682d.
Artifact source: 80d51698e39ca20b7af19457b8b80d83caf366b0; release commit: 8bfb53f35d8692fdc5f02adf947b69eb26a68294 (user-merged PR #301), whose fresh pack is byte-identical. Package/state upgrade from published 0.11.0 passed with the old MCP process alive, and all 376 archive files were installed identically. Real Claude Code 2.1.296 and Codex 0.162.1 passed the installed hook and inbox checks. The full local suite passed 3426 tests with 7 skips and no failures; all twelve CI checks passed.
See release evidence and limits. Native capture records keep their original versions and provenance; no new native activation or version floor is inferred from these checks.
ACC v0.11.0
ACC 0.11.0 ships atomic batch claim/release and optional per-session status indicators.
- Claim or release multiple resources in one atomic CLI/MCP operation. Conflicts leave all existing claims and leases unchanged.
release --allreleases the caller's claims while keeping the session and intent open; scalar interfaces remain compatible. - Optional indicators for Claude Code, Antigravity CLI, Kimi Code and Grok show reception and failure states. Existing footer settings and user replacements survive updates. Optional diagnostic writes do not delay message delivery.
- Includes the final PR #288 review corrections and test cleanup, and the batch feature from PR #291.
Node 24 or later is required. Store contract 7 and managed-update protocol 2 are unchanged.
The published archive is the exact verified candidate: agents-can-communicate-0.11.0.tgz, 607,574 bytes, 374 files.
SHA-256: dea2bb1d94212f35099f4b90e03cf99020ff574def26d4da757c1feda046c521.
SHA-1: 60ca32c0062dcc0ebbe45111c61b53cc41f21ecf.
Artifact source: 2244dba7a94ab27fe6c7152f813cfd1ab49b26b2; release commit: 67c92d7c44c86aebd0eed07435f7cfd29d842325 (user-merged PR #292). Package/state upgrade from published 0.10.4 passed with the old MCP process alive. All 374 source/archive/installed hashes matched. Full local gates passed 3371 tests with 8 skips and no failures; all nine platform/package/real-client CI checks passed.
See release evidence and limits. Native capture records keep their original versions and provenance; no new native activation or version floor is inferred from these checks.
ACC v0.10.4
ACC 0.10.4 corrects Codex sender permission failures and the approved retry workflow from #285 / #286.
- Socket metadata, endpoint access, and connection denials remain
transport_permission_denied, including during expired binding refresh. - The CLI prints the original retry key. The refreshed Codex skill uses approved execution and retries the recorded message without a duplicate.
- Release verification isolates client homes and keeps platform and deadline checks deterministic.
Update with:
acc updateStore contract 7 and managed-update protocol 2 are unchanged. Recorded delivery policies are preserved.
The exact archive passed clean installation/removal, all 27 managed/store checks, and upgrade from published 0.10.3 with a live MCP process. All 351 source/archive/installed file hashes matched. Real Claude/Codex hook checks and idle wake checks passed. The full local suite passed 3,216 tests with 8 skips and no failures.
Artifact: agents-can-communicate-0.10.4.tgz, 583,640 bytes, 351 files.
SHA-256: f714e20ce25f3f50ce5bf619ed6edbbc15ab9dd6391b3f1c4326b8b4c80aed5d.
Post-install verification
On 2026-10-09, acc update activated this release locally and preserved delivery policies. All 351 active runtime files matched the published archive. Doctor reported a healthy store and active Claude/Codex delivery.
The installed runtime recovered a denied send through approved execution. Real Codex 0.162.0 woke from idle and completed its marker action without another user prompt. The retry created no duplicate message. The test used isolated ACC state and a receiver binding published by the test harness.
ACC v0.10.3
ACC v0.10.3 release evidence
A process that has exited but that its parent has not collected no longer holds an update, and
doctor no longer reports a maintenance failure that its release outlived.
Exact artifact
- Source: clean commit
d1f1a5bc788a76d8f586415ce5ec598e025a4638, the version sweep on the
merge of #282. - Archive:
agents-can-communicate-0.10.3.tgz, packed from that commit. - Size: 582,379 bytes; 351 packed entries.
- SHA-256:
94bff1849b8abd642d576fa0f5c71806d2012108c3ccac43a5119b82acc1025f. - The root and fifteen bundled workspaces are at
0.10.3. The Antigravity plugin manifest, the
Gemini extension manifest and the lockfile carry the same version sweep as 0.10.2, over the
same nineteen files.docs/UPGRADING.mdalready describes 0.10.3, from #282.
scripts/verify-package.mjs passed on that exact file: 351 entries, none forbidden; six
certification manifests with the exact evidence allowlist; every packed Markdown link resolves;
the root and fifteen bundled workspaces at 0.10.3; acc, acc-hook and acc-mcp present;
doctor reports six adapters; nothing written into a project without Git; client install and
uninstall restore topology, modes, links and bytes, and a repeated uninstall is a no-op.
All 27 packed checks passed against real installed archives: the 24 managed-update checks and
the 3 store-migration checks.
What changed since 0.10.2
One merged pull request changed the package; its development record is below this section of
the CHANGELOG:
- #282 (#280, #281).
processIsZombiereadsps -o stat=withLC_ALL=C; a state that
starts withZis a zombie, and an unreadable state decides nothing. A native binding, the
pid a session record names, an ACC runtime lease and a pin stop holding when their process is
a zombie; runtime admission does not run the check. The pending generation's refresh removes
zombie bindings and leases. The Codex service host reads a<defunct>daemon as dead. Doctor
does not report a failed or cancelled job whose target is the active release with nothing
pending.
Upgrade from the published 0.9.1
The published agents-can-communicate@0.9.1 was installed from npm into an isolated prefix,
with its own HOME, ACC_DATA_HOME and project, a PATH of the prefix, client stubs, node and
system directories, and a local registry that served this exact archive:
- A live 0.9.1 process. 0.9.1's own
acc-mcpheld contract 6, andacc updatewaited for
it. After it exited, the nextacc statusactivated 0.10.3. The store was on contract 7 within
1.0 second, with event, journal, message and receipt bytes unchanged, and 0.10.3 answered the
open question on it. The installed generation matched the archive file for file, and the Codex
config.tomlwas unchanged. 0.9.1 code refused the migrated store with exit 4. - Stale bindings. Two bindings without a pid for sessions with no record: the 0.9.1 updater
activated 0.10.3 after its refresh removed them, and the store moved to contract 7. With a
third binding for a session that still heartbeats, that one stayed and kept 0.10.3 pending. - A reused pid. A binding written two days earlier, whose pid now belonged to a
sleep
started at the time of the run: the 0.9.1 updater activated 0.10.3, the binding was removed,
and the store moved to contract 7. - A zombie. A binding written a second after its process started, whose process had exited
under a parent that never collected it (ps:ZN,<defunct>): the 0.9.1 updater activated
0.10.3 while the process was still a zombie, the binding was removed, and the store moved to
contract 7. The published 0.10.2, in the same setup, stayed pending on that pid. - A pending 0.10.2. With 0.9.1's
acc-mcpholding contract 6,acc updatestaged the
published 0.10.2. Offered 0.10.3,acc update(which runs the pending 0.10.2's code) staged
0.10.3 in its place; no--pin nonewas needed. Once the server exited, 0.10.3 activated, and
only its generation remained.
Upgrade from the published 0.10.0, 0.10.1 and 0.10.2
Each was installed the same way, with its own acc-mcp running and holding contract 7; their
published sha256 matched the recorded ed5c2d88…, b899b2ca… and 6e3d6350…. Each
acc update printed Updated ACC to 0.10.3; integrations refreshed. without waiting. The
installed generation matched the archive file for file, and the Codex config.toml was
unchanged.
Mixed versions
The published 0.10.0, 0.10.1 and 0.10.2 code, each run from its own package through its
entrypoint, shared one store with the installed 0.10.3: a question each way, each found in the
other's inbox and answered, both reported 2 live, and both doctors reported the store healthy.
The maintainer's data home
Read-only, on the live runtime with 0.10.2 active: no native hold would block a contract-7
activation. The maintenance record from the 0.10.2 update is still failed (processes_active)
for 0.10.2. The installed 0.10.2 doctor reports it; this tree's diagnostic gives ACC 0.10.2 is active. and no maintenance report.
Suite
npm test on the evidence commit 08ff2e6 ran under env -i with only HOME, USER, TMPDIR,
a PATH of system directories plus node, the release npm cache, and ACC_TEST_REAL_FSYNC=1, so
that every flush happened, as in CI. It gave 3,213 tests: 3,206 passing, 0 failing, 7 skipped,
in 10.5 minutes, and left no test directory behind. Five skipped tests exercise Windows only
(named pipes, .cmd clients, WMI); two are the real-clients tests, which ran separately
(below). Nothing was re-run.
Real clients
On the maintainer's Mac (macOS arm64), the real-clients tests ran against the candidate commit's
packed tree, with an isolated home and a model stub on 127.0.0.1. Claude Code 2.1.292 and
Codex 0.160.1 attached through their own hooks, saw each other and carried a message into the
next turn, and an idle interactive Claude Code woke through its inbox. Both passed on the first
run. The real-clients CI job passed on ubuntu-latest and windows-latest on the final head of
#282.
Limits
- The maintainer's own machine is updated after publication; that result is not part of this
record. - A machine with a pending 0.10.0 or 0.10.1 still needs
acc update --pin noneonce: their
updater runs the decision and does not replace a pending release. - No zombie existed on a real machine during these checks; the zombie cases used a real zombie
made for the test. Linux was exercised only through CI. Windows has no zombie state.
ACC v0.10.2
ACC v0.10.2 release evidence
A native binding whose pid another program now has no longer holds a store-contract update, and
a pending release that cannot activate gives way to a newer one.
Exact artifact
- Source: clean commit
fb1222a1411cabf9ea539ce56008a479182778f8, the version sweep on the
merge of #278. - Archive:
agents-can-communicate-0.10.2.tgz, packed from that commit. - Size: 580,985 bytes; 351 packed entries.
- SHA-256:
6e3d63508379246a971947ccd66c5e544e8a53932f4f95e9f179e85b40fa4ceb. - The root and fifteen bundled workspaces are at
0.10.2. The Antigravity plugin manifest, the
Gemini extension manifest and the lockfile carry the same version sweep as 0.10.1, over the
same nineteen files.docs/UPGRADING.mdalready describes 0.10.2, from #278.
scripts/verify-package.mjs passed on that exact file: 351 entries, none forbidden; six
certification manifests with the exact evidence allowlist; every packed Markdown link resolves;
the root and fifteen bundled workspaces at 0.10.2; acc, acc-hook and acc-mcp present;
doctor reports six adapters; nothing written into a project without Git; client install and
uninstall restore topology, modes, links and bytes, and a repeated uninstall is a no-op.
All 27 packed checks passed against real installed archives: the 24 managed-update checks and
the 3 store-migration checks.
What changed since 0.10.1
One merged pull request changed the package; its development record is below this section of
the CHANGELOG:
- #278 (#276, #277). A binding whose live pid belongs to a process that started more than a
second after the binding was last written is no hold (ps -o lstart=withLC_ALL=C, or WMI
on Windows; an unreadable start time decides nothing), and the pending generation's refresh
removes it. When the pending release reportsprocesses_active,acc update, and the
automatic update once a check is due, stage a newer release in its place; with nothing newer,
the result still reportsprocesses_active.
Upgrade from the published 0.9.1
The published agents-can-communicate@0.9.1 was installed from npm into an isolated prefix,
with its own HOME, ACC_DATA_HOME and project, a PATH of the prefix, client stubs, node and
system directories, and a local registry that served this exact archive:
- A live 0.9.1 process. 0.9.1's own
acc-mcpheld contract 6, andacc updatewaited for
it. After it exited, the nextacc statusactivated 0.10.2. The store was on contract 7 within
0.8 seconds, with event, journal, message and receipt bytes unchanged, and 0.10.2 answered the
open question on it. The installed generation matched the archive file for file, and the Codex
config.tomlwas unchanged. 0.9.1 code refused the migrated store with exit 4. - Stale bindings. Two bindings without a pid for sessions with no record: the 0.9.1 updater
activated 0.10.2 after its refresh removed them, and the store moved to contract 7. With a
third binding for a session that still heartbeats, that one stayed and kept 0.10.2 pending. - A reused pid. A binding written two days earlier, whose pid now belonged to a
sleep
started at the time of the run: the 0.9.1 updater activated 0.10.2, the binding was removed,
and the store moved to contract 7. - A stuck pending 0.10.1, as on the maintainer's machine. With 0.9.1's
acc-mcpholding
contract 6,acc updatestaged the published 0.10.1. Offered 0.10.2, the 0.10.1 updater only
retried 0.10.1.acc update --pin nonecleared it, andacc updatestaged 0.10.2. Once the
server exited, 0.10.2 activated, and only its generation remained.
Upgrade from the published 0.10.0 and 0.10.1
Each was installed the same way, with its own acc-mcp running and holding contract 7; their
published sha256 matched the recorded ed5c2d88… and b899b2ca…. Each acc update printed
Updated ACC to 0.10.2; integrations refreshed. without waiting. The installed generation
matched the archive file for file, and the Codex config.toml was unchanged.
Mixed versions
The published 0.10.0 code, and separately the published 0.10.1 code, each run from its own
package through its entrypoint, shared one store with the installed 0.10.2: a question each way,
each found in the other's inbox and answered, both reported 2 live, and both doctors reported
the store healthy.
The maintainer's data home
Native holds that block a contract-7 activation, counted read-only on the live data home with
this tree's code: 5 bindings on 2 pids, the Codex app server and the Claude Code session that
ran these checks. The 0.10.1 code had counted 6 pids on the same home earlier the same day.
Suite
npm test on the evidence commit 3f42483 ran under env -i with only HOME, USER, TMPDIR,
a PATH of system directories plus node, the release npm cache, and ACC_TEST_REAL_FSYNC=1, so
that every flush happened, as in CI. It gave 3,201 tests: 3,193 passing, 0 failing, 8 skipped,
in 5.0 minutes, and left no test directory behind. Five skipped tests exercise Windows only
(named pipes, .cmd clients, WMI); two are the real-clients tests, which ran separately
(below); one needs Gemini CLI absent from the machine. Nothing was re-run.
Real clients
On the maintainer's Mac (macOS arm64), the real-clients tests ran against the candidate commit's
packed tree, with an isolated home and a model stub on 127.0.0.1. Claude Code 2.1.292 and
Codex 0.160.1 attached through their own hooks, saw each other and carried a message into the
next turn, and an idle interactive Claude Code woke through its inbox. Both passed on the first
run. The real-clients CI job passed on ubuntu-latest and windows-latest on the final head of
#278.
Limits
- The maintainer's own machine is updated after publication; that result is not part of this
record. - A machine with a pending 0.10.0 or 0.10.1 needs
acc update --pin noneonce: their updater
runs the decision and does not replace a pending release. - Linux and Windows were exercised only through CI; the Windows start-time reading is covered by
the unit test that reads the test process's own start time.
ACC v0.10.1
ACC v0.10.1 release evidence
The update from 0.9.x finishes once no 0.9.x session runs: a native binding that names no
client process no longer keeps it pending.
Exact artifact
- Source: clean commit
17e525713d3d5ddba69578081b174356f2549015, the version sweep on the
merge of #274. - Archive:
agents-can-communicate-0.10.1.tgz, packed from that commit. - Size: 579,454 bytes; 351 packed entries.
- SHA-256:
b899b2ca496c2ee920ac3899ba6259e45ce534af05b2bc32d115d28a7cc94d8b. - The root and fifteen bundled workspaces are at
0.10.1. The Antigravity plugin manifest, the
Gemini extension manifest and the lockfile carry the same version sweep as 0.10.0, over the
same nineteen files.docs/UPGRADING.mdsays what 0.10.1 changes.
scripts/verify-package.mjs passed on that exact file. It checked:
- 351 entries, none of them forbidden;
- six certification manifests, with the exact evidence allowlist shipped;
- every packed Markdown link resolves;
- the root and fifteen bundled workspaces are at 0.10.1;
acc,acc-hookandacc-mcpare present;- doctor reports six adapters;
- a workspace with no Git gets nothing written into the project;
- client install and uninstall restore topology, modes, links and bytes, and a repeated
uninstall is a no-op.
All 27 packed checks passed against real installed archives: the 24 managed-update checks and
the 3 store-migration checks.
What changed since 0.10.0
One merged pull request changed the package; its development record is below this section of
the CHANGELOG:
- #274 (#273).
listNativeHoldsjudges a binding without a client pid by its session
record: it is no hold when the record is gone, names an exited process, or, with no process
recorded, is offline by ACC's presence rule (closed, or 30 minutes without a heartbeat). A
live recorded process, an unreadable record or a missing store keeps it a hold.
prepareRefreshremoves the stale ones under each session's lifecycle mutex, because an
older generation's activator imports the pending generation'sprepareRefreshbefore it
lists blockers by its own rule.
Upgrade from the published 0.9.1
The published agents-can-communicate@0.9.1 was installed from npm into an isolated prefix,
with its own HOME, ACC_DATA_HOME and project, a PATH of the prefix, client stubs, node and
system directories, and a local registry that served this exact archive. Three runs:
- A live 0.9.1 process. A contract-6 store with an answered and an open question, and 0.9.1's
ownacc-mcpholding contract 6.acc updateprintedACC 0.10.1 is ready; waiting for 1 active or unidentified process(es): PID 68287 (acc-mcp; store contract 6).After the server
exited, the next plainacc statusactivated 0.10.1; within 1.3 seconds the store was on
contract 7,store-upgrade.jsonwas complete and the 0.9.1 generation was reclaimed. Only
protocol.json, a newindexes/and eightstage/*.publishedmarkers differed from the
store copied before the update. 0.10.1 answered the open question on it. The installed
generation matched the archive file for file, the Codexconfig.tomlwas byte for byte the
one 0.9.1 wrote, and the registry saw three requests. - Stale bindings. Two bindings without a pid that name sessions with no record, the shape
0.8.5 wrote.acc updateprintedUpdated ACC to 0.10.1; integrations refreshed.: the 0.9.1
updater activated it by its own rule after the candidate'sprepareRefreshremoved both. The
store moved to contract 7. The published 0.10.0, run the same way during #274, stayed
pending behind the same two bindings. - A heartbeating session without a pid, besides the two stale bindings. The two were
removed; the third binding stayed and kept 0.10.1 pending, and the store stayed on contract 6.
Upgrade from the published 0.10.0
The published agents-can-communicate@0.10.0 (sha256 ed5c2d88…, as recorded for 0.10.0) was
set up the same way, with its own acc-mcp running and holding contract 7. Its acc update
printed Updated ACC to 0.10.1; integrations refreshed. without waiting: the process declared
the same contract. Doctor reported a healthy store and ACC 0.10.1 is active., the installed
generation matched the archive file for file, and the Codex config.toml was unchanged.
Mixed versions
The published 0.10.0 code, run from its own package through its entrypoint, and the installed
0.10.1 shared one store:
- 0.10.1 sent a question to a participant that 0.10.0 had attached;
- 0.10.0 found it in its inbox and replied;
- 0.10.0 sent a question back, and 0.10.1 found both it and the answer, and replied;
- both reported
2 live, and both doctors reported the store healthy.
A copy of the maintainer's data home
Native holds that block a contract-7 activation, counted read-only with this tree's code on the
backup taken before the 0.10.0 update: 9, all naming a client process that is running; none
without a pid. With 0.10.0's code the same copy had 32 without a pid. Liveness is checked
against the machine's processes at the time of counting, so the number with a pid moves.
Suite
npm test on the evidence commit a17488f ran under env -i with only HOME, USER, TMPDIR,
a PATH of system directories plus node, the release npm cache, and ACC_TEST_REAL_FSYNC=1, so
that every flush happened, as in CI. It gave 3,192 tests: 3,184 passing, 0 failing, 8 skipped,
in 7.3 minutes, and left no test directory behind. Five skipped tests exercise Windows only
(named pipes, .cmd clients, WMI); two are the real-clients tests, which ran separately
(below); one needs Gemini CLI absent from the machine. Nothing was re-run.
Real clients
On the maintainer's Mac (macOS arm64), the real-clients tests ran against the candidate commit's
packed tree, with an isolated home and a model stub on 127.0.0.1. Claude Code 2.1.292 and
Codex 0.160.1 attached through their own hooks, saw each other and carried a message into the
next turn, and an idle interactive Claude Code woke through its inbox. Both passed on the first
run.
The real-clients CI job runs the same two tests on ubuntu-latest and windows-latest for every
pull request; both passed on the final head of #274.
Limits
- The maintainer's own machine is updated after publication; that result is not part of this
record. - A binding without a pid whose session still heartbeats keeps an update pending by design.
- Linux and Windows were exercised only through CI.
ACC v0.10.0
ACC v0.10.0 release evidence
Stores move to contract 7, which reads a bounded index on every send, and ACC migrates each
workspace's store by itself after the update. On Windows, a writer waiting for the store lock
looks again when the lock's record is being deleted. The README and docs lead with messages
between different vendors' clients.
Exact artifact
- Source: clean commit
ba9f2375c0c90aeae63a1909b5ac51fdd18bcb04, the corrected public texts
over the rewritten README and docs (e972dfb), the merge of main with #269 (3174150) and
the version sweepa9edc13. - Archive:
agents-can-communicate-0.10.0.tgz, packed from that commit. - Size: 577,865 bytes; 351 packed entries.
- SHA-256:
ed5c2d884def7e064515cbeac6adc3bad6214c2cdc7feba10f79134e9d601c50. - The root and fifteen bundled workspaces are at
0.10.0. The Antigravity plugin manifest, the
Gemini extension manifest and the lockfile carry the same version sweep as 0.9.1, over the
same nineteen files.docs/UPGRADING.mdgains "From 0.9.x".
scripts/verify-package.mjs passed on that exact file. It checked:
- 351 entries, none of them forbidden;
- six certification manifests, with the exact evidence allowlist shipped;
- every packed Markdown link resolves;
- the root and fifteen bundled workspaces are at 0.10.0;
acc,acc-hookandacc-mcpare present;- doctor reports six adapters;
- a workspace with no Git gets nothing written into the project;
- client install and uninstall restore topology, modes, links and bytes, and a repeated
uninstall is a no-op.
All 27 packed checks passed against real installed archives: the 24 managed-update checks and
the 3 store-migration checks.
Three earlier candidates went through the same checks and are described under "Earlier
candidates" below: the archive from the version sweep a9edc13, discarded when #269 changed
two packed files; the archive from 3174150, discarded when the README, three docs pages and
the package description changed; and the archive from e972dfb, discarded when a closer
reading of the vendors' documentation corrected the public texts. Every check here was
repeated on this archive.
What changed since 0.9.1
Three merged pull requests changed the package. Their development records are below this
section of the CHANGELOG:
- #263 (#241). Store contract 7: a send and its retries read a rebuildable, bounded message
and receipt index instead of rereading unrelated records.acc doctor --migrate-storemoves a
contract-6 store; hooks fail open on one and never change its format. - #264. The activated generation migrates every contract-6 store of its data home itself,
once no live process holds contract 6, and recordsstore-upgrade.json; the launcher's
scheduler retries an incomplete pass after a minute. Claude Code and Codex hooks print a
systemMessagewhile a store waits, and plainacc doctornames the migration command. - #269. On Windows, a writer's lstat of a name inside a lock directory that another writer
is deleting answers EPERM; it is now asked again within the writer's deadline, and an open
refused while the lock changed hands opens the new record. The change applies on Windows
only.
#265, #266 and #268 changed only tests, the test runner and CI.
The release branch also rewrote the public texts for the position between vendors
(design: docs/design/2026-10-06-cross-vendor-positioning.md): the README, docs/WHY_ACC.md,
the openings of docs/index.md and docs/GETTING_STARTED.md, and the package description and
keywords. Gemini CLI left the README's client list and the keywords; its adapter is unchanged.
ba9f237 then made the vendor statements exact, after Claude Code's documentation showed that
it invites scripts to post into a session's inbox socket and codex queue --help showed a
command a person or script runs: the texts say that neither client offers a way to message the
other's sessions, tell a one-vendor reader to try its own messaging first, and say what wiring
the two by hand leaves out. The docs index and the setup guide point upgraders at "From
0.9.x".
Upgrade from the published 0.9.1
The published agents-can-communicate@0.9.1 (sha256 517023ba…, as recorded for 0.9.1) was
set up as follows:
- installed from npm into an isolated prefix, with its own
HOME,ACC_DATA_HOMEand project,
and aPATHthat held only the prefix, the client stubs, node and system directories; - wired to Claude Code and Codex through version stubs (
--delivery actionable), which left
automatic updates on; - given a contract-6 store by its own commands: two attached participants, a question with its
answer, and a second question left open; - given a live 0.9.1 process holding contract 6: its own
acc-mcpserver, started through the
launcher, whose runtime lease named0.9.1and store contract 6; - given a local registry that served this exact archive.
Its own acc update printed ACC 0.10.0 is ready; waiting for 1 active or unidentified process(es): PID 42539 (acc-mcp; store contract 6). and acc doctor printed the same notice.
version still answered 0.9.1, both generations were present, and the store stayed on
contract 6.
The MCP server was then stopped. The next plain acc status, with updates allowed, started the
0.9.1 worker, which activated 0.10.0; 0.10.0 migrated the store. Within 1.6 seconds of that
command, while the packed checks ran beside it:
control.jsonnamed0.10.0active, with no pending update;- the store's
protocol.jsonnamedstoreVersion: 7, with the same workspace id and
initialization time; store-upgrade.jsonrecordedcomplete: true,pending: 0;reclaim.jsonrecordedcomplete: true, and the 0.9.1 generation was gone.
A recursive comparison with the store copied before the update found only protocol.json
changed, a new indexes/ directory, and eight new stage/*.published markers: every event,
journal, message and receipt file was byte for byte the same.
On the migrated store, 0.10.0 showed the open question in the recipient's inbox, recorded its
answer, and showed both answers in the sender's inbox. Doctor reported a healthy store,
ACC 0.10.0 is active., and two of six adapters installed. The installed generation matched
the extracted archive file for file (diff -r). The Codex config.toml was byte for byte the
one 0.9.1 wrote. The registry saw three requests; the last was for the 0.10.0 tarball.
Mixed versions
0.9.x code cannot open a contract-7 store. The published 0.9.1 code, run from its own package
through its entrypoint, answered acc status on the migrated store with exit 4 and
unknown store version. A 0.9.1 process that still runs, such as the MCP server above, holds
contract 6 and so blocks the activation; both versions never use one store.
Suite
npm test on the evidence commit fb36b72 ran under env -i with only HOME, USER, TMPDIR,
a PATH of system directories plus node, the release npm cache, and ACC_TEST_REAL_FSYNC=1, so
that every flush happened, as in CI. It gave 3,182 tests: 3,174 passing, 0 failing, 8 skipped,
in 6.3 minutes, and left no test directory behind. The skipped tests are the same eight as on
the first candidate (see there). Nothing was re-run. The backlog reminder test that failed once
on the first candidate passed, with the diagnostics of e2f5f05.
Real clients
On the maintainer's Mac (macOS arm64), the real-clients tests ran against the candidate commit's
packed tree, with an isolated home and a model stub on 127.0.0.1. Claude Code 2.1.291 and
Codex 0.160.1 attached through their own hooks, saw each other and carried a message into the
next turn, and an idle interactive Claude Code woke through its inbox. Both passed on the first
run, as they did on every earlier candidate.
The real-clients CI job runs the same two tests on ubuntu-latest and windows-latest for every
pull request; both passed on the final heads of #263, #264 and #269. On #264, Claude Code
2.1.289 showed the notice in its terminal, and Codex 0.160.1 (codex exec, which prints no
systemMessage) completed both hooks with it (see its development record).
Earlier candidates
The archive packed from e972dfb (577,709 bytes, sha256 6ce5114f…) passed every check above:
the package verification, the 27 packed checks, the upgrade from the published 0.9.1 (the store
moved within 2.5 seconds of the holder's exit), the mixed-version check, both real-clients
tests, and npm test on its evidence commit 39a1362 with every flush: 3,182 tests, 3,174
passing, 0 failing, 8 skipped, in 4.8 minutes.
The archive packed from 3174150 (577,239 bytes, sha256 30bcb2f4…) passed every check above:
the package verification, the 27 packed checks, the upgrade from the published 0.9.1 (the store
moved within 1.7 seconds of the holder's exit), the mixed-version check, both real-clients
tests, and npm test on its evidence commit 6e0d249 with every flush
(ACC_TEST_REAL_FSYNC=1): 3,182 tests, 3,174 passing, 0 failing, 8 skipped, in 6.3 minutes.
The archive packed from a9edc13 (576,895 bytes, sha256 a64974be…) passed the package
verification, the same upgrade from the published 0.9.1 (the store moved within 2 seconds of
the holder's exit), the mixed-version check and both real-clients tests.
In its first packed run, the 24 managed-update checks and the explicit-migration check passed.
Two store-migration checks failed: they offered the update as 0.9.99, which is no longer
newer than the installed 0.10.0, so the update found nothing to stage. The test-only commit
d9ff788 makes them offer the next patch above the installed version, as every other packed
update check does; the three store-migration checks then passed.
npm test on its evidence commit 56407f0 ran under env -i with only HOME, USER, TMPDIR,
a PATH of system directories plus node, and the release npm cache, as in CI. It gave 3,167
test...
ACC v0.9.1
ACC v0.9.1 release evidence
Codex sessions answer peers without auto-review, and doctor no longer calls the Claude Code
plugin edited after an update.
Exact artifact
- Source: clean commit
e5ca71626ef32b7431dc9d568b0b606e1f0e700b, the version sweep on the
merge of #261. - Archive:
agents-can-communicate-0.9.1.tgz, packed from that commit. - Size: 558,274 bytes; 337 packed entries.
- SHA-256:
517023ba89f09dda8ada36fb451de20849798a32f91fc46cb346212b5e335560. - The root and fifteen bundled workspaces are at
0.9.1. The Antigravity plugin manifest, the
Gemini extension manifest and the lockfile carry the same version sweep as 0.9.0, over the
same nineteen files.docs/UPGRADING.mddescribes what 0.9.1 changes.
scripts/verify-package.mjs passed on that exact file. It checked:
- 337 entries, none of them forbidden;
- six certification manifests, with the exact evidence allowlist shipped;
- every packed Markdown link resolves;
- the root and fifteen bundled workspaces are at 0.9.1;
acc,acc-hookandacc-mcpare present;- doctor reports six adapters;
- a workspace with no Git gets nothing written into the project;
- client install and uninstall restore topology, modes, links and bytes, and a repeated
uninstall is a no-op.
All 24 managed-update packed checks passed against real installed archives.
What changed since 0.9.0
Two merged pull requests changed the package. Their development records are below this section
of the CHANGELOG:
- #259 (#257). The ownership fingerprint of Claude Code's plugin cache leaves out the
.in_use/<pid>markers Claude Code writes, as it already left out.orphaned_at, and
keepVersionskeeps a version whose marker names a live process. - #261 (#260). ACC's own Codex rules file,
$CODEX_HOME/rules/agents-can-communicate.rules,
allows ACC's wrapper to run the participant commands without an approval, so Codex's
auto-review never judges them. Only an unedited ACC-generated file is replaced or removed.
Every client's skill says that a peer is a local session of the same user.
One more, #258, changed only a test helper. A test-only commit on the release branch makes the
packed fixtures wait for a client's last hook before removal (see Suite).
Upgrade from the published 0.9.0
The published agents-can-communicate@0.9.0 (sha256 df470014…, as recorded for 0.9.0) was
set up as follows:
- installed from npm into an isolated prefix, with its own
HOME,ACC_DATA_HOMEand project,
and aPATHthat held only the prefix, the client stubs, node and system directories; - wired to Claude Code and Codex through version stubs (
--delivery actionable); - given a local registry that served this exact archive.
Its own acc update printed Updated ACC to 0.9.1; integrations refreshed.. After the update:
versionanswered0.9.1.- The active generation was
0.9.1-1dfca7c3919d2936edf12ffc, beside
0.9.0-4924570eae6ab33e36cc92d7. - The runtime kept four launchers.
- Doctor reported
ACC 0.9.1 is active, a healthy store, and "ACC commands run without an
approval prompt" with the new Codex rules file; the Codex ownership record now holds three
intact artifacts, the rules file among them. - The update wrote
~/.codex/rules/agents-can-communicate.ruleswith the wrapper and the
eleven participant commands, andcodex execpolicy check(0.160.1) allowed
<wrapper> reply …against it. - The Codex
config.tomlwas byte for byte the one 0.9.0 wrote. - The installed generation matched the extracted archive file for file (
diff -r). - The registry saw three requests; the last was for the 0.9.1 tarball.
reclaim.json named the 0.9.1 generation with complete: false right after the update. After
an acc status from npm's acc and one from ACC's launcher, both generations stayed. With
attemptedAt moved two hours back, the next launcher acc status started the 0.9.1 worker. The
worker removed the 0.9.0 generation and recorded complete: true.
Mixed versions
The published 0.9.0 code and the installed 0.9.1 shared one store. The 0.9.0 code ran from its
own package through its entrypoint. In that store:
- 0.9.1 sent a question to a participant that 0.9.0 had attached;
- 0.9.0 found the question in its inbox and replied;
- 0.9.1 received the answer;
- both reported
2 live; - 0.9.0 synced the full store (6 events);
- both doctors reported the store healthy.
STORE_VERSION stays 6.
Suite
npm test on the evidence commit b5cf1c0 ran under env -i with only HOME, USER, TMPDIR,
a PATH of system directories plus node, and the release npm cache, as in CI. It gave 3,066
tests: 3,059 passing, 0 failing, 7 skipped, in 4.7 minutes, and left no test directory behind.
Five skipped tests exercise Windows only (named pipes, .cmd clients, WMI). The other two are
the real-clients tests, which need the clients on PATH; they ran separately, below. Nothing
was re-run.
Real clients
On the maintainer's Mac (macOS arm64), the real-clients tests ran against the candidate commit's
packed tree, with an isolated home and a model stub on 127.0.0.1:
- Claude Code 2.1.289 and Codex 0.160.1 attached through their own hooks, saw each other, and
carried a message into the next turn. The real Codex read ACC's installed rules file:
codex execpolicy checkansweredallowfor<wrapper> reply …and nothing for
<wrapper> install …, and uninstall removed the file. - The live test, in which an idle interactive Claude Code 2.1.289 wakes through its inbox,
failed once in its teardown withENOTEMPTY. Stress runs reproduced it 1 time in 5; a
process sampler showed Claude Code's SessionEnd hook (acc-hook.mjs claude_code finish)
still writing in the fixture's data home while the fixture was removed. The test helper now
waits for every process working in the fixture; 12 runs after that change passed. The wake
itself passed in every run.
The real-clients CI job runs the same two tests on ubuntu-latest and windows-latest for every
pull request; both passed on the final heads of #259 and #261.
Limits
- No model-driven Codex session ran against the rules file: the evidence that a matched command
skips auto-review is Codex's own source andcodex execpolicy check. - No real Claude Code session wrote an
.in_usemarker in five isolated runs; the marker case
is covered by tests built from the marker observed on the maintainer's machine. - Windows gets no Codex rule, and Linux and Windows were exercised only through CI.
ACC v0.9.0
ACC v0.9.0 release evidence
ACC runs natively on Windows, with live delivery to Claude Code, Codex and Antigravity CLI there.
Antigravity's desktop app gets live delivery through its own language server. An uninstall takes
back only what its own data home installed.
Exact artifact
- Source: clean commit
cc3540fcb1ae8dc22543af50dd2d55aeb6f1ca77. It follows the version sweep
6c50a9don the merge of #254 and two documentation commits. - Archive:
agents-can-communicate-0.9.0.tgz, packed from that commit. - Size: 554,565 bytes; 336 packed entries.
- SHA-256:
df4700148f5710536155af47b05a0f211d5c8a5d09dee5c945e2b5a5303881c6. - The root and fifteen bundled workspaces are at
0.9.0. The Antigravity plugin manifest, the
Gemini extension manifest and the lockfile carry the same version sweep as 0.8.5, over the
same nineteen files.docs/UPGRADING.mddescribes what 0.9.0 changes.
scripts/verify-package.mjs passed on that exact file. It checked:
- 336 entries, none of them forbidden;
- six certification manifests, with the exact evidence allowlist shipped;
- every packed Markdown link resolves;
- the root and fifteen bundled workspaces are at 0.9.0;
acc,acc-hookandacc-mcpare present;- doctor reports six adapters;
- a workspace with no Git gets nothing written into the project;
- client install and uninstall restore topology, modes, links and bytes, and a repeated
uninstall is a no-op.
All 24 managed-update packed checks passed against real installed archives.
What changed since 0.8.5
Five merged pull requests changed the package. Their development records are below this
section of the CHANGELOG:
- #235 (#234). Native Windows: portable filesystem primitives for the store and the managed
runtime, a Node shim in each client's own hook-shell form, the process table through WMI,
state in%LOCALAPPDATA%, andwindows-latestin the CI test and package matrices. - #243. Live delivery on Windows: the Claude Code inbox pipe with the peer key, Codex through
codex app-server proxy, and the Antigravity relay on a named pipe. A hook does less work on
each turn: fewer flushes, no writer lock for an absent binding, and no journal completion
marker. A real-clients CI job runs Claude Code and Codex on Linux and Windows. - #252. The Antigravity install also allows the relay start command, so an unattended
Antigravity CLI session starts its relay without a prompt. - #254 (#171). The Antigravity desktop app as a client variant with its own evidence and live
delivery through its language server; the running client's version and restart rebind; Codex
app chats asclient_session_embedded. - #255 (#253).
acc uninstallwithout--adapterskips a client that the current data home
did not install.
Four more (#242, #244, #248, #249) changed only tests and their fixtures. Two documentation
commits on the release branch correct pages that still said native Windows keeps next-turn
delivery, Linux is uncaptured, and live delivery needs Apple Silicon macOS, and say that on
Windows a Claude Code configuration directory outside the user's profile keeps next-turn
delivery. The first candidate, 6c50a9d (sha256 52cf072e…), passed the same checks before
the second of them; every result below is from the final candidate.
Upgrade from the published 0.8.5
The published agents-can-communicate@0.8.5 (sha256 f593a339…, as recorded for 0.8.5) was
set up as follows:
- installed from npm into an isolated prefix, with its own
HOME,ACC_DATA_HOMEand project,
and aPATHthat held only the prefix, the client stubs, node and system directories; - wired to Claude Code and Codex through version stubs (
--delivery actionable); - given a local registry that served this exact archive.
Its own acc update printed Updated ACC to 0.9.0; integrations refreshed.. After the update:
versionanswered0.9.0.- The active generation was
0.9.0-4924570eae6ab33e36cc92d7, beside
0.8.5-2e048e5495553522a5557872. - The runtime kept four launchers.
- Doctor reported
ACC 0.9.0 is activeand a healthy store. - The Codex profile was byte for byte the one 0.8.5 wrote, with the same four socket grants.
- The installed generation matched the extracted archive file for file (
diff -r). - The registry saw three requests; the last was for the 0.9.0 tarball.
reclaim.json named the 0.9.0 generation with complete: false right after the update. After
an acc status from npm's acc and one from ACC's launcher, both generations stayed. With
attemptedAt moved two hours back, the next launcher acc status started the 0.9.0 worker. The
worker removed the 0.8.5 generation and recorded complete: true.
Mixed versions
The published 0.8.5 code and the installed 0.9.0 shared one store. The 0.8.5 code ran from its
own package through its entrypoint. In that store:
- 0.9.0 sent a question to a participant that 0.8.5 had attached;
- 0.8.5 found the question in its inbox and replied;
- 0.9.0 received the answer;
- both reported
2 live; - 0.8.5 synced the full store (6 events, none repeated);
- both doctors reported the store healthy.
0.9.0 writes no journal completion marker, and 0.8.5 read and wrote that store. STORE_VERSION
stays 6.
Suite
npm test on the evidence commit 0ded3de ran under env -i with only HOME, USER, TMPDIR,
a PATH of system directories plus node, and the release npm cache, as in CI. It gave 3,052
tests: 3,045 passing, 0 failing, 7 skipped, in 4.8 minutes, and left no test directory behind.
Five skipped tests exercise Windows only (named pipes, .cmd clients, WMI). The other two are
the real-clients tests, which need the clients on PATH; they ran separately, below. Nothing
was re-run.
Real clients
On the maintainer's Mac (macOS arm64), the real-clients tests ran against the candidate commit's
packed tree, with an isolated home and a model stub on 127.0.0.1:
- An idle interactive Claude Code 2.1.289 woke through its inbox socket when another session
asked it a question, and the model read the message with no one typing. - Claude Code 2.1.289 and Codex 0.160.0 attached through their own hooks, saw each other, and
carried a message into the next turn.
The real-clients CI job runs the same two tests on ubuntu-latest and windows-latest for
every pull request; both passed on the final head of #254 (9a23121f).
Captured with real models during development, each in an isolated data home:
- Antigravity 2.19.1, the desktop app (#254, a private 0.8.99 build of that branch): an idle
conversation woke, a push during a long answer waited for it, the woken agent answered with
acc replyand no prompt, a resent message arrived once, a message to a quit app stayed
queued, and after a restart the next turn bound the conversation again. - Antigravity CLI 1.2.16 (#252, a private 0.8.99 build): the agent started its relay with no
approval prompt, and a question pushed into the idle session was answered withacc reply. - Claude Code 2.1.286 on Windows (#243,
windows-latest): the inbox pipe dropped a frame
without the auth line and ran a turn after the peer key's auth line. - Codex 0.159.3 on Windows (#243,
windows-latest, under a standard user): a queued message
reached the model throughcodex app-server proxy. - The uninstall change (#255, the packed candidate, an isolated
HOMEwith two data homes):
an uninstall from the data home that had not installed left the other one's wiring
unchanged;--adapterstill removed it.
Limits
- The Antigravity desktop app was captured on 2.19.1, darwin-arm64 only. Its Windows and Linux
builds are uncaptured, and the bind needslsof. - Codex 0.160.0 ran only the next-turn check here. Its LocalDaemon live push was not captured
again for this release; the latest records are 0.159.1 on macOS (0.8.5's evidence) and
0.159.3 on Windows (#243). - Codex live delivery on Windows needs a daemon started from a terminal that is not elevated.
The CI Windows runner is elevated. - The upgrade and mixed-version checks used version stubs for Claude Code and Codex.
- Linux and Windows were exercised only through CI.
ACC v0.8.5
ACC v0.8.5 release evidence
A Codex chat that a launch option keeps embedded is told which option, and the user sees that
notice directly. After an update, the previous runtime generation is removed an hour later, with
automatic updates on or off.
Exact artifact
- Source: clean commit
2745dcbd745d1a4e609be1f974058168fd6ba147, the version sweep on the
merge of #232. - Archive:
agents-can-communicate-0.8.5.tgz, packed from that commit. - Size: 499,566 bytes; 318 packed entries.
- SHA-256:
f593a339dbdfb6406a9f21ec7cf7d94c5526549dbd11a24c6538f514257fa428. - The root and fifteen bundled workspaces are at
0.8.5. The Antigravity plugin manifest, the
Gemini extension manifest and the lockfile carry the same version sweep as 0.8.4, over the
same nineteen files.docs/UPGRADING.mddescribes what 0.8.5 changes for an embedded Codex
chat and when the previous generation is removed.
scripts/verify-package.mjs passed on that exact file. It checked:
- 318 entries, none of them forbidden;
- six certification manifests;
- every packed Markdown link resolves;
- the root and fifteen bundled workspaces are at 0.8.5;
acc,acc-hookandacc-mcpare present;- doctor reports six adapters;
- a workspace with no Git gets nothing written into the project;
- client install and uninstall restore topology, modes, links and bytes, and a repeated
uninstall is a no-op.
All 24 managed-update packed checks passed against real installed archives.
What changed since 0.8.4
Two merged pull requests. Their development records are below the 0.8.4 section of the
CHANGELOG:
- #231 (#230). The Codex adapter names the first launch option on an embedded chat's
command line that keeps it embedded. The option travels with the refusal aslaunchOption,
and the native-attempt record keeps it. The chat's notice, doctor's session line and the
sender's line (nativeLaunchOption) advise starting Codex without the option. On its one
turn, the notice is printed as the hook'ssystemMessage, which Codex shows the user and never
sends to the model. This was measured on Codex 0.147.0, 0.155.1 and 0.159.1, and on a real
0.159.1codex --searchchat with the candidate installed. - #232. An
acc updateruns from the generation it replaces and holds a lease on it. Its
in-process reclaim therefore keeps that generation, but it used to record the pass as done.
The pass is now recorded as unfinished, and the hourly retry removes the old generation. This
was found in this release's first upgrade preflight: there, the published 0.8.4 left its own
generation in place withcomplete: true.
Upgrade from the published 0.8.4
The published agents-can-communicate@0.8.4 was set up as follows:
- installed from npm into an isolated prefix with its own
HOME,ACC_DATA_HOMEand project; - wired to Claude Code and Codex through version stubs (
--delivery actionable); - given a local registry that served this exact archive.
Its own acc update printed Updated ACC to 0.8.5; integrations refreshed.. After the update:
versionanswered0.8.5.- The active generation was
0.8.5-2e048e5495553522a5557872, beside
0.8.4-64eb6d4ee24c36031b6c44eb. - The runtime kept four launchers.
- Doctor reported
ACC 0.8.5 is active. - The Codex profile kept the same four grants.
- The installed generation matched the extracted archive file for file (
diff -r). - The registry saw three requests; the last was for the 0.8.5 tarball.
reclaim.json named the 0.8.5 generation with complete: false right after the update. It still
did after an acc status from npm's acc and one from ACC's launcher. Neither command started a
worker, and both generations stayed. With attemptedAt moved two hours back, the next launcher
acc status started the 0.8.5 worker. The worker removed the 0.8.4 generation and recorded
complete: true.
Mixed versions
The published 0.8.4 code and the installed 0.8.5 shared one store. The 0.8.4 code ran from its
own package through its entrypoint. In that store:
- 0.8.5 sent a question to a participant that 0.8.4 had attached;
- 0.8.4 found the question in its inbox and replied;
- 0.8.5 received the answer;
- both reported
2 live; - 0.8.4 synced the full store (6 events).
STORE_VERSION stays 6.
Suite
npm test on the evidence commit 61d8235 ran under env -i with only HOME, USER, TMPDIR,
a PATH of system directories plus node, and the release npm cache, as in CI. It gave 2,795
tests: 2,794 passing, 0 failing, 1 skipped, in 10.8 minutes, and left no test directory behind.
The skipped test is the existing uninstall check that skips on a machine where Gemini CLI is
installed. Nothing was re-run.
Real clients
A Codex 0.159.1 check ran during development in an isolated HOME, CODEX_HOME and data home,
with the #231 candidate installed from its archive. Its record is in
docs/release-evidence/unreleased-codex-embedded-launch-option.md:
codex --searchshowed the user "↳ Hook · ACC: live peer delivery is off in this chat:
--searchmakes Codex run it on its own app server. For live delivery, start Codex without
--searchand move what it sets into config.toml."- The model received only its own line.
- The sender's line and doctor named
--search.
The published 0.8.4 ran on the maintainer's machine the same day, with Codex 0.159.1:
- An empty daemon chat was registered and answered a request with its first turn.
- A closed TUI's session closed 60.4 seconds after the exit.
- A Codex auto-update restarted the daemon, and a long-running chat's binding and runtime pin
moved to the new daemon's pid within 4 seconds.
Limits
- The display of a hook's
systemMessagewas measured on Codex 0.147.0, 0.155.1 and 0.159.1
only. Every Codex release from 0.144.1 to 0.159.1 accepts the field. - A chat that is embedded because of an environment variable (
CODEX_EXEC_SERVER_URL) or a
configuration loader shows nothing on its command line, so it keeps the advice for a missing
daemon. - The old generation stays for an hour after an update and is removed by the first ACC command
after that hour. - Linux was exercised only through the CI suite.