aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers/specs
diff options
context:
space:
mode:
Diffstat (limited to 'docs/superpowers/specs')
-rw-r--r--docs/superpowers/specs/2026-10-19-sb-builder-phase2-design.md10
1 files changed, 8 insertions, 2 deletions
diff --git a/docs/superpowers/specs/2026-10-19-sb-builder-phase2-design.md b/docs/superpowers/specs/2026-10-19-sb-builder-phase2-design.md
index 66fb2c1..21a041f 100644
--- a/docs/superpowers/specs/2026-10-19-sb-builder-phase2-design.md
+++ b/docs/superpowers/specs/2026-10-19-sb-builder-phase2-design.md
@@ -149,8 +149,14 @@ fields, not an error.
`gpg-preset-passphrase --forget` per keygrip and returns
`{"error": "bad passphrase"}`. The passphrase is never put on a command
line, in the environment, in a log or on disk.
-- To verify in planning: whether a preset passphrase expires with the cache
- TTLs or lasts until the agent restarts. The GUI checks state before every
+- Found 2026-10-20: the preset passphrase is lost when gpg-agent exits, and
+ it exits when root's last login session ends. elogind then removes
+ `/run/user/0` (root does not linger), where the agent's sockets live; the
+ agent notices its socket is gone and terminates. The GUI's ssh
+ ControlMaster keeps a session open while sb-builder runs, so the key stays
+ unlocked as long as the GUI does, and locks about 10 minutes after it
+ quits (ControlPersist). Accepted as is; `loginctl enable-linger root`
+ would keep the agent across sessions. The GUI checks state before every
real run either way.
### Version