ZeroClaw
ZeroClaw closes a budget blind spot in peer-agent turns
A ZeroClaw patch says detached peer-agent delivery lost task-local cost context, so recipient usage was not recorded and process-wide budgets were not enforced. Related work restores configured provider fallback for delegated targets while an A2A RFC sketches a broader outbound agent boundary.
zeroclaw-labs/zeroclaw PR #9469 is the inspected primary source: “fix(runtime): scope peer-agent turns to the recipient's cost context.” The two related records below were inspected as supporting context, not treated as independent confirmation.
The facts
- zeroclaw-labs/zeroclaw PR #9469 was created 2026-07-27T22:14:13Z and was closed at inspection; its title is “fix(runtime): scope peer-agent turns to the recipient's cost context.” - zeroclaw-labs/zeroclaw PR #9544 was created 2026-07-29T18:14:19Z and was open at inspection; its title is “fix(delegate): honor configured provider fallbacks.” - zeroclaw-labs/zeroclaw issue #9106 was created 2026-07-16T09:04:07Z and was open at inspection; its title is “RFC: A2A outbound client (A2ATool).” - The repository reported 32439 stars, 646 open issues, default branch master, and last push 2026-07-30T01:00:32Z. - The latest tagged-release baseline checked was v0.8.3 published 2026-07-16T01:47:13Z.
What changed
zeroclaw-labs/zeroclaw PR #9469 reports: Summary **Base branch:** master **What changed and why:** Peer-agent delivery (SendMessageToPeerTool::execute) runs the recipient's turn in a detached zeroclaw_spawn::spawn! task. A detached task does not inherit its caller's task-locals, so the recipient's process_message ran with **no** cost-tracking context installed — TOOL_LOOP_COST_TRACKING_CONTEXT / TOOL_LOOP_TURN_USAGE were always unset for that turn. As a result the recipient's usage was never recorded, and its provider calls bypassed the existing process-wide budget. The fix wraps the recipient's process_message in the same two scopes every other entry point installs (a new private helper deliver_peer_turn_with_cost_scope), with the
zeroclaw-labs/zeroclaw PR #9544 reports: Summary **Base branch:** master **What changed and why:** Build root-configured delegated targets through the canonical session provider builder, so existing route, retry, and fallback configuration is materialized. Preserve the configless legacy test-fixture construction path. Add a deterministic agentic regression: one controlled primary HTTP 503, then a configured fallback response. **Scope boundary:** Does not change Reliable retry/fallback semantics, user-visible fallback notices, terminal-error rendering, configuration schema, documentation, or the separate semantic-empty-completion work. **Blast radius:** All delegate execution modes share this target-provider construction path: synchronous, agentic, background, and parallel delegation. Existing target alias
zeroclaw-labs/zeroclaw issue #9106 reports: Problem 3566 splits A2A support into A2AServer (inbound, shipped in v0.8.2 at crates/zeroclaw-gateway/src/a2a.rs) and A2ATool (outbound, derived from issue #3566). Today a ZeroClaw agent cannot proactively call an external A2A-compliant agent; inter-agent collaboration is forced through a channel as a makeshift bus — exactly the scenario #3566 is meant to eliminate. This RFC implements #3566's outbound slice. Proposal Add an outbound client under crates/zeroclaw-gateway/, following the existing Tool trait pattern, declaring remote peers via an [a2a.client] config block. The tool set follows A2A spec §3.1 Core Operations, matching the inbound
Why it matters
A spawned turn is still spending somebody’s budget. Detached execution must create fresh recipient-scoped accounting rather than inherit sender state or run outside the ledger entirely. This is an operator boundary: persisted state, execution ownership and visible controls must describe the same event. A workaround that broadens access, deletes state or hides the symptom would trade a visible defect for an unmeasured one.
Current
The primary record was closed when captured on 2026-07-30. The release baseline was v0.8.3 published 2026-07-16T01:47:13Z. Current repository metadata, pull requests, issues, release records, Google News discovery, Hacker News discovery, Lobsters, Metamesh and the rendered ClawCharts row were checked. ClawCharts selected the subject; it did not prove the claim.
Evidence
The primary URL is https://github.com/zeroclaw-labs/zeroclaw/pull/9469. Supporting records are https://github.com/zeroclaw-labs/zeroclaw/pull/9544 and https://github.com/zeroclaw-labs/zeroclaw/issues/9106. Their source bodies, timestamps and states were captured in the daily evidence bundle. Test counts, reproductions and deployment observations remain attributed to their authors unless explicitly identified as independently rerun.
Source boundary
Open work is described as open, closed work as closed, and operator reports as reports. A pull request is evidence of proposed or reviewed direction, not proof of a shipped release. Issue closure would not by itself prove a deployed fix. Search residue, package mirrors and historically published source spines were excluded.
Operator take
Verify recipient attribution and shared caps with concurrent peer traffic. Provider fallback should preserve the same accounting and audit identity rather than becoming a second unmetered lane. Preserve a before-state receipt, make the smallest reversible change, and verify the original failure independently after intervention.
Caveat
Public project records are mutable. Status, scope and evidence can change after publication. This brief records the inspected state and does not authorize changes to a reader’s deployment.
Source inspected; source state, environment and release boundary remain explicit.