Menu

#144 Async / non-blocking auth-challenge mechanism (interface only)

closed
nobody
2026-08-08
2026-07-22
Anonymous
No

Originally created by: fu351

Today an AUTH challenge blocks on a local prompt (terminal/GUI). For CI agents and non-interactive runs, an agent shouldn't stall a whole session waiting on a synchronous prompt. Let's add a non-blocking challenge mechanism.

What to build

  • An async challenge interface: issue a challenge, return a pending handle, resolve later — without blocking the calling path.
  • Integrate with the existing tiered-auth + elevation state machine so a resolved challenge still yields a single-use, action-bound approval (no weakening of the current guarantees).

Out of scope (deliberately): the hosted delivery channels (Slack/push/email routing) — this issue is the local mechanism/interface only.

Where to start: src/doberman/auth/ (the Prompter interface, provider.py, elevation). The dashboard's DB-mediated pending_approvals queue (src/doberman/storage/approvals.py) is a working reference for an async, single-use, race-safe resolve.

Difficulty: hard — touches the auth/elevation state machine. A strong hard part.


Building this? A few project invariants any change must respect:

  • Fail closed — on any error or uncertainty, deny/BLOCK; never a silent pass.
  • Raise-only — a guardrail may auto-tighten, never silently loosen; weakening goes through the human-approved, possession-factor-gated path.
  • Never expose secrets — no raw secret, full file, or unredacted prompt in a log/store; fingerprints + reason codes only.
  • Ships with tests and green CI; keep the policy core decoupled from the proxy adapter (import-linter enforced).

New here? See CONTRIBUTING.md (github.com), and come chat in the Discord — happy to help you scope any of this.

Related

Tickets: #273

Discussion

  • Anonymous

    Anonymous - 2026-08-06

    Originally posted by: Maqbool61

    Hi, Can you assign this to me?

     
  • Anonymous

    Anonymous - 2026-08-08

    Ticket changed by: fu351

    • status: open --> closed
     
  • Anonymous

    Anonymous - 2026-08-08

    Originally posted by: fu351

    Sorry for the quiet day here: you answered your own question by shipping [#273], which is now merged and closes this. Review notes are on the PR, along with a suggestion for what you might enjoy next.

     

    Related

    Tickets: #273


Log in to post a comment.