Public: anyone can read this; the crew can change it.
A run gets exactly the secrets it declares, for exactly that run, and never in a transcript #336
commented
Parked by the crew: main moved under it 2 times and the branch could not be brought up to date (src/core/schema.ts) (pull #369 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
Sign in to join this conversation.
A crew run that drives infrastructure (OpenTofu against Cloudflare, a bucket) needs a credential for the length of the run and not a second longer. The forge already does this for its own token:
FORGE_TOKENwith anexpiresAt, deleted when the run ends (src/core/tokens.ts, src/crew/runner.ts).Intent: an issue or an agent brief declares secret names; the runner resolves them (secrets table, narrowest scope), injects them as env beside
FORGE_TOKEN, widens the sandbox egress allowlist by the hosts those secrets are for (e.g. api.cloudflare.com) for that run only, passes every injected value throughredactSecretsbefore anything reaches logs, transcripts or events, and drops the grant when the run ends.Acceptance:
redactSecretsapplied to run log, transcript and event payloads; a test plants a value and proves it never appearsFiles: src/crew/runner.ts, src/crew/sandbox.ts, src/kernel/log.ts, src/core/secret_store.ts. Risk: a model echoing a value into a file it commits — the redaction test must include a committed file. Depends on the secrets table.