Files
SeedPass/docs
thePR0M3TH3ANandClaude Fable 5 dafae50ca4 security: fix agent-boundary findings from the fourth reviewer
The reviewer that took longest found the most, including one bug that lies
to the user about a security-relevant outcome.

- `agent stop` never sent the capability and never checked the reply. The
  daemon refused the shutdown, the CLI printed {"agent":"stopped"} anyway,
  and the seed stayed in memory and still served owner-mnemonic. The command
  documents itself as wiping held seeds. It now authenticates and reports
  what actually happened.

- The owner capability lived at <appDir>/agent.sock.cap -- inside the very
  directory a scoped agent must be given to find fingerprints.json and the
  socket. A token holder could `unset SEEDPASS_TOKEN` and the CLI would read
  the capability on its behalf. It now lives under XDG_RUNTIME_DIR in a 0700
  parent, created with wx so a pre-planted file is never adopted. This raises
  the bar; it does not make a token a sandbox, and capabilities.ts no longer
  claims otherwise.

- Redaction was a three-key denylist over deliberately loose schemas, so
  `custom_fields` -- including values Python masks as is_hidden -- went to
  any read-scoped token verbatim. It is now an allowlist that recurses into
  custom_fields, reporting labels and presence but never values.

- Authorization ran after the vault was decrypted and after the entry
  existence check, giving an unauthenticated caller an entry-id enumeration
  oracle, no audit record for the misses, and a full PBKDF2 unlock per probe.
  Tokens are now checked first, denials are indistinguishable for missing
  and forbidden entries, and every denial is audited.

- The audit chain had no anchor: deleting the log, or a suffix of it, left
  something that verified perfectly. A signed head now pins the record count
  and tail signature. Separately, `loaded` was latched before the read that
  could throw, so one transient EACCES made every later append sign from
  genesis and broke the chain permanently.

- The exec allowlist -- documented as the only real containment for a `use`
  grant -- was bypassable via the clipboard (a session-wide channel) and had
  no CLI flag at all, so no shipped token could carry one. Both fixed.

- Unauthenticated connections could buffer without bound, growing to
  gigabytes while each chunk rescanned the accumulated string. Line size and
  concurrent connections are now capped.

- A token-supplied TOTP timestamp was unbounded, so one use minted codes
  valid decades ahead, outliving the token's TTL. Clamped to a small window.

- Prototype keys ("__proto__", "constructor") resolved to inherited
  properties, passed constraint checks against undefined values and burned a
  use; now an own-property check. The socket was created with the umask mode
  and chmod'd afterwards, leaving a connectable window; it is now created
  under a restrictive umask. TTL was enforced only when a request arrived, so
  an idle agent held the seed indefinitely past expiry; there is now a timer.

220 core + 78 CLI tests green; 36/36 cross-implementation checks green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-14 23:58:58 -04:00
..
2025-07-10 19:37:30 -04:00
2025-07-10 19:37:30 -04:00
2025-07-10 19:37:30 -04:00
2025-08-03 10:27:13 -04:00
2026-02-25 18:07:22 -05:00

SeedPass Docs

This directory contains SeedPass project documentation.

Start Here

  • dev_control_center.md (single source to decide what to do next)

Agent and Autonomy Docs

  • agent_autonomy_security_plan.md
  • policy_as_code.md
  • sync_conflict_contract.md

Core Security Docs

  • security_readiness_checklist.md
  • threat_model.md
  • crypto_key_management_review.md
  • secret_handling_local_exposure_review.md
  • auth_lock_unlock_access_review.md
  • supply_chain_release_integrity.md
  • release_verification_runbook.md
  • release_protection_policy.md
  • operational_runbooks.md
  • staged_rollout_runbook.md

Architecture and Product Docs

  • ARCHITECTURE.md
  • SPEC.md
  • typescript_web_extension_port_plan.md
  • entry_types.md
  • entry_graph.md
  • tui_v3_plan.md (active roadmap for scratch rebuild)
  • tui_v2_plan.md (legacy logic reference)
  • tui_v2_parity_checklist.md
  • tui_v2_parity_backlog.md
  • tui_v2_legacy_parity_matrix.md
  • tui_v2_ui_refresh_plan.md
  • semantic_vector_index_plan.md
  • tui_v2_cutover_decision.md
  • tui_v2_large_vault_validation.md
  • security.md
  • nostr_setup.md
  • nostr_namespace_reset.md
  • packaging.md

QA and Testing Docs

  • TEST_INVENTORY.md (central index of all tests and runners)
  • agent_testing_roadmap.md
  • ai_agent_tui_testing.md
  • agent_test_format.md
  • installer_testing.md
  • kb_scale_validation.md
  • ci-health-2026-02-19.md
  • agent-handoffs/README.md

Discoverability Commands

  • seedpass --help
  • seedpass
  • seedpass tui2
  • seedpass --legacy-tui
  • seedpass legacy
  • seedpass <group> --help
  • seedpass tui2 --help
  • seedpass tui2 --check
  • seedpass capabilities --format json
  • seedpass agent bootstrap-context