Name the shared store
Process isolation does not
isolate agents that share a
writable store. The worm in
Green's piece does not need
a breakout. Agent A writes
instructions into something
Agent B will read as
ordinary input: a package, a
cache entry, a wiki page, a
Slack message. B is still
inside its sandbox and still
obedient. The payload moved
through the thing you
allowed because the job
needed packages, mail, or a
board.
That changes what you
inventory. A container, a
microVM, and a network
policy are three controls.
They do not cover the npm
cache on a shared volume,
the Artifactory proxy that
was the only permitted
egress, or the Slack channel
both agents can post to. If
either agent can write it
and the other will trust the
read, it is a mailbox. Call
it one. Split it per
session, or mark every read
as untrusted and turn
install scripts off until a
human names the note.
Egress is the same idea
pointed at the network. The
useful property in the
Cloudflare doc is timing,
not the brand of proxy. The
rule exists before the
process starts. An allow
list is deny-by-default. A
deny list is
allow-by-default with a
naughty list, which is how
"we blocked the mining
pools" becomes "everything
else was fine." Secrets
belong on the request after
it leaves the agent. If the
agent can print the key, that
control already failed,
whatever the container
claims.
The HydraFusion note is the
small version of the same
habit. "Which model?" is the
wrong log line when the
program that ran was a
cascade or a critique. Log
the workflow, whether it
escalated, and whether the
critic was a different
family and read-only. A
warden model that reads the
traffic is a second agent
with a narrower job. It is
not containment. Green is
blunt that a cheaper model
guarding a stronger one is
another alignment problem.
Use the warden as a reject
path you can test. Do not
use it as a reason to skip
the list of shared stores.
-
List every store two
agents can both write.
Shared caches, package
proxies, wikis, Slack,
docs, and mail count.
-
One writable store per
session, or treat every
read from the shared one
as untrusted input.
-
Attach the egress policy
before the process starts.
No tightening after the
first tool call.
-
Prefer an allow list. A
deny list leaves the
public internet open.
-
Inject secrets on the way
out. If the agent can
print the key, that
control failed.
-
Log the workflow, not
only the model name.
Single, cascade, or
critique, and whether it
escalated.
Before the next session,
write that shared-store
list. If you cannot name
them, you are not done
sandboxing. Do not add
another classifier to avoid
writing the list.