Skip to content

Device-signed ledger approvals verified off the host #75

Open

Description

@chrisohearn

Server-verified ledger approvals (#73) stop callers that only have MCP access. They do not stop a full-access agent on the host:

  • It runs as Chris, so it can write a forged answer or approval_json straight into statev2.sqlite.
  • It can create a pairing session with t3 auth pairing create and answer as one of Chris's devices.
  • The session label is chosen by the client.

Chris accepted this limit for now in the audit thread on 2026-11-12, and asked for this follow-up.

Proposal

When Chris answers a ledger-key dialog, his device signs the question text and his answer with a passkey (WebAuthn). The answer stores the signature. Jarvis verifies it off the host against Chris's registered public key, so nothing that runs on the host can mint an approval.

Open questions:

  • How Jarvis registers and pins Chris's passkey.
  • Which surfaces can sign: web, desktop and mobile.
  • How Jarvis gets the signed payload: in approval, or by reading the answer.

Ledger key: r3/ledger-verified-approvals. Decision record: docs/jarvis/decisions/0015-server-verified-approvals.md.

🤖 Generated with Claude Code

Activity

  1. chrisohearn commented on Nov 13, 2026

    @chrisohearn
    OwnerAuthor

    Status: still valid, a design proposal. Chris accepted the full-access-agent limit of #73 for now and asked for this follow-up. Not started. No ledger row.

    Triage by the round-four GitHub hygiene pass (ledger key r4/w7-github), 2026-11-13. Left open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions