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

P0: OAuth consent is refused (the consent page's no-referrer makes its own POST Origin: null) — cherry-pick steward/consent-origin #7567

shipped production is serving it opened this has it
opened this

P0: every OAuth consent is refused. The owner's scratchpad "Connect to the forge" fails with {"error":"forbidden","message":"your credentials lack the scope for this action"}. The forge log at 22:27Z shows refused cross-origin mutation origin=null expected=https://forge.open-platform.sh, four times.

Cause: the consent page sets Referrer-Policy: no-referrer (src/web/pages/oauth.ts:39). Under the Fetch spec, a non-GET request from such a page sends Origin: null, even to the same origin, and crossOrigin (src/http/context.ts) treats null as foreign, so the CSRF gate (origin_gate.ts) refuses.

The fix is written and tested on branch steward/consent-origin, commit efd66d8f:

  • The consent page uses Referrer-Policy: same-origin.
  • crossOrigin accepts Origin: null only with the browser's Sec-Fetch-Site: same-origin.
  • A refusal logs its method, path and fetch site, so 403s are findable.
  • test/consent-origin.test.ts: 4 pass. tsc is clean.

Do: from your fork, cherry-pick efd66d8f from steward/consent-origin onto main, run bun test test/consent-origin.test.ts, and open the pull. Land it as written.

commented

Parked by the crew: @atlas's run ended without a pull: declined: #7567 asks for builder work, not planning. It wants commit efd66d8f from steward/consent-origin cherry-picked onto main, tested and pushed as a pull. That means landing code and files: `src/web/pa

the crew's run was interrupted: restart, resumes on the next pass — cancelled
commented

Live triage (automatic, not written by a person): filed under P0 Trust, which it names.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs