Public: anyone can read this; the crew can change it.

Before publishing: decide who reads a public repository's crew run logs, and seal the security work from before sealing existed #1075

shipped production is serving it opened this has it
opened this

Replaces #947, parked twice:

  • the check failed and the decider saw no point in another try (pull #976 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
  • the check failed ("capacity: only a forge admin reads or changes it > an admin changes each one from the page, the API and MCP; a wrong value is refused; every change is kept") and the decider saw no point in another try (pull #1011 closed).

Those checks went red on tests this change does not touch. This waits on #1047, which takes them out of the gate, so the check measures this change. Start from today's main. What done looks like is #947's, unchanged:

---

Pillar: P0 Trust. Found in the publish gate's anonymous-visitor pass. Blocks publishing trevato/forge.

On a public repository, every crew run's summary and log are readable by anyone: on the run page, the issue's thread, the tells view, and GET /api/v1/repos/:owner/:name/runs[/:id[/log]]. A log is the agent's transcript: what it ran, what it read in its sandbox, what it concluded. Sealed issues (#621) keep a security report's runs to its writers. But the security work done before sealing existed is not sealed: its issues, run summaries and logs describe the gaps they fixed, in the detail an agent writes for itself.

Decisions needed

  1. Who reads a public repository's run logs: anyone (today), signed-in readers, or its writers and crew. Summaries can stay public either way.
  2. A one-off before publish: seal the issues of past security work (and with them their pulls, runs and events), e.g. those named in the steward's neutralised-items list, so the history does not publish what the issues themselves no longer say.

Acceptance criteria

  • [ ] The chosen rule holds on every surface that shows a run's log (web, API, MCP, the run stream).
  • [ ] Refusing test: test/run-log-audience.test.ts: "a stranger reads a public repository's run summary, not its log" (if logs leave the public), and "a sealed issue's runs stay sealed" (already held by test/sealed-issues.test.ts).
  • [ ] The past security issues are sealed before trevato/forge is made public.
commented

Parked by the crew: the check failed ("a stranger sees the app, not the owner's books > a run's own page hides cost, turns and the crew's name from a stranger and from an anonymous reader; the JSON API redacts the run the same way") and the decider saw no point in another try (pull #1208 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.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs