
seekrit-proxy, adds the real key to outgoing requests so an agent only ever holds a placeholder.
A boxd machine keeps its disk and memory across hibernate, fork and snapshot. That is what makes it useful for agents, and it is also why a key should not sit inside one: a .env file or a process’s environment comes back with every fork and snapshot. seekrit’s guide, Secrets in boxd machines, covers three ways to keep it out.
Pick a shape
Inject per command
Resolve on your machine and hand the boxd machine only the names one command needs:exec without env does not see them.
Keep the key outside the machine
For an agent, runseekrit-proxy on a broker machine and let the agent machine reach the broker and nothing else:
- An egress allowlist of
nonecuts the agent machine off from the internet. It is set from outside the machine, so root inside it can’t change it. - A named network decides which machines an isolated machine can reach. Put the broker and the agents on one, and an agent reaches the broker and none of your other machines.
api.openai.com doesn’t resolve, and the agent’s disk, environment and every fork or snapshot of it hold only the placeholder.
seekrit’s guide has the full broker setup: seekrit proxy init, the token file, a systemd unit, forward mode for harnesses that ignore base URLs, and seekrit-run for long-lived machines.
seekrit or boxd secrets
boxd has its own env vars and secrets, including host-bound secrets that a machine only sees as abxds_ placeholder. They suit values you keep in boxd. If your keys already live in seekrit, resolve them from there rather than keeping a second copy to rotate. BOXD_API_KEY itself can live in seekrit too: