Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/swarm-queue-client/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
atlas 89013b5408 agent permissions: hold hive-c0re's stored grant until the agent's own read
Until its first successful read of its key, the harness read its
permissions as the default set, `execution` included. So did the
subagent daemon. An agent the operator had narrowed ran wider than
granted after every restart while the queue was unreachable, and in the
gap before the first 10 s poll. During the meta-repo import, every
non-ruth key is still unset, and the agent read that as the default too,
for as long as the import stayed pending.

mara picked option (a) on #5293: "a, removal of the old path as a follow
up in 1w".

hive-c0re now writes each agent's entry from
swarm-agent-permissions.json into the agent's runtime dir as
swarm-permissions.json (/run/hive in the container), together with
whether the import is still pending. It writes the file at every start
(write_dropins) and after every 30 s pass of the permissions worker. The
harness and the subagent daemon hold that stored list until their own
first read succeeds. While the import is pending, an unset key keeps
the stored list rather than reverting it to the default. A queue that
is down never blocks a start: the agent runs on the stored grant.

The decision lives in swarm_queue_client::agent_permissions::HiveCopy,
shared by both readers.

Part of #5170.
2026-10-15 18:01:40 +02:00
..
agent_icon.rs hive-c0re/swarm-*: drop clippy allows and dedupe unix_now + KV open_or_create 2026-10-09 10:25:48 +02:00
agent_inference.rs swarm-ui: per-agent cap on concurrently running subagents 2026-10-14 10:13:29 +02:00
agent_limits.rs swarm-controller: refuse a cap systemd would ignore; GET creates no bucket 2026-10-12 20:22:21 +02:00
agent_login.rs swarm UI: an agent that needs a Claude login shows it on its card 2026-10-14 20:07:46 +02:00
agent_permissions.rs agent permissions: hold hive-c0re's stored grant until the agent's own read 2026-10-15 18:01:40 +02:00
agent_schedules.rs hive-c0re/swarm-*: drop clippy allows and dedupe unix_now + KV open_or_create 2026-10-09 10:25:48 +02:00
agent_status.rs hive-c0re/swarm-*: drop clippy allows and dedupe unix_now + KV open_or_create 2026-10-09 10:25:48 +02:00
agent_term.rs swarm-controller: end a dead replay, clamp stale resume ids, test on a real server 2026-10-11 23:26:24 +02:00
agent_token.rs swarm-queue-client: one agent-token spelling, and no hive in AgentCredential 2026-09-28 08:24:52 +02:00
builder.rs swarm-builder: build each agent config PR head and post a commit status 2026-10-14 03:30:46 +02:00
claude_login.rs swarm UI: log an agent into claude from its card; the credentials go to bao and the agent picks them up 2026-10-15 13:26:29 +02:00
kv.rs hive-c0re/swarm-*: drop clippy allows and dedupe unix_now + KV open_or_create 2026-10-09 10:25:48 +02:00
lib.rs agent capabilities live in a swarm KV record, set from swarmctl 2026-10-15 18:01:40 +02:00
notices.rs swarm-queue-client: drop notices::PREFIX, reuse STREAM 2026-08-24 14:34:37 +02:00
review_classifier.rs swarm-controller: the review classifier reads a diff with 200 lines of context 2026-10-15 12:43:12 +02:00
status.rs hive-c0re/swarm-*: drop clippy allows and dedupe unix_now + KV open_or_create 2026-10-09 10:25:48 +02:00
stored_secret.rs swarm-nats-auth: re-read the OIDC client secret only on a 400 or 401 2026-10-13 19:16:04 +02:00
subagent_term.rs swarm-controller: end a dead replay, clamp stale resume ids, test on a real server 2026-10-11 23:26:24 +02:00
wanted.rs swarm-controller: refuse a cap systemd would ignore; GET creates no bucket 2026-10-12 20:22:21 +02:00