---
id: w4/m16/t005
title: "Docs: ADR012 §7 + rewrite ADR025's consent-denied troubleshooting (operator blessing optional, not required)"
worker: worker4
status: done
estimate: 20m
depends_on: [w4/m16/t004]
---

## Objective

Update the two documents whose current text describes the pre-m16 world. `docs/ADR012-auth.md` §7 says "a real consent UI is future work" and describes deny-by-default for unknown clients; `docs/ADR025-connect-an-agent.md` documents the deny as expected behavior and prescribes operator blessing (Hydra admin `PATCH` / `OAUTH_TRUSTED_CLIENTS`) as the fix. After m16, an unknown client reaches a user-facing consent screen; operator blessing remains as an optional convenience (skips the screen for first-party clients), not a prerequisite.

## Context

- ADR012 §7's consent bullet (the one starting "Consent is a headless dashboard route") and the `hydra-consent.ts` top-of-file comment both carry the "future work" phrasing — update the code comment too.
- ADR025: step 4 of the connect walkthrough ("an unrecognized self-registered client is denied by default") and the Troubleshooting entry "Consent denied right after login" both need rewriting; the Cursor section's "no interactive consent screen on the Cursor side today" caveat should be re-checked against what the flow now looks like.
- Markdown is CI-checked: run `npx prettier@3.4.2 --write "**/*.md"` after edits.

## Steps

1. Rewrite ADR012 §7's consent paragraph: headless auto-accept for trusted/skippable, consent screen for unknown clients, subject-binding + CSRF + deny-by-default invariants, remember window.
2. Rewrite ADR025 step 4 + Troubleshooting; reposition operator blessing as the "skip the screen" option.
3. Sync the `hydra-consent.ts` header comment.
4. Prettier pass.

## Files

- `docs/ADR012-auth.md`
- `docs/ADR025-connect-an-agent.md`
- `dashboard/src/common/server-fn/hydra-consent.ts` (comment only)

## Acceptance criteria

- [ ] No remaining doc/comment text claims unknown clients are denied by design or that a consent UI is future work.
- [ ] ADR025's recipe describes the self-serve path a Claude Code user actually experiences, with operator blessing as optional.
- [ ] Prettier clean.

## Out of scope

- ADR018 parity-ledger updates (t006's Render-parity check owns those).
