docs: a website session is a secret without a reference - configuration-tiers says why raw login writes it into the secrets file itself and that the 1Password safeguards do not cover it; the secret tier row names it (#169 close)
CI / verify (push) Successful in 8m21s
CI / pwsh (push) Successful in 2m40s

Files changed:
- docs/explanation/configuration-tiers.md
- docs/reference/configuration.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
This commit is contained in:
torbenandClaude Opus 5.5 committed 2026-10-11 21:15:40 +02:00
1 parent 5994b2a88c
commit c06bde2e95
2 files changed
+11 -1

No files matched your search

+10
View File
@@ -61,6 +61,12 @@ A reference is resolved only when a command asks for that one value, never when
read, and the value stays in that process's memory. `doctor` reports whether each reference read, and the value stays in that process's memory. `doctor` reports whether each reference
resolves, never what it resolves to. resolves, never what it resolves to.
One secret has no reference at all: the session `raw login` stores for a website behind a login.
The user never types it, so nobody could put it into a secrets source by hand. `raw login` writes
it into the secrets file itself, under a name derived from the host, and `raw fetch` finds it by
that name. It never goes to 1Password, because it changes with every sign-in and the stack only
ever reads from there. So it sits in the one source the 1Password safeguards below do not cover.
## What this does not protect against ## What this does not protect against
Keeping secrets out of the tree protects against three things: a secret being committed, a Keeping secrets out of the tree protects against three things: a secret being committed, a
@@ -81,6 +87,10 @@ What limits the exposure without preventing it:
one that already was; one that already was;
- in CI, a service account that sees only that vault. - in CI, a service account that sees only that vault.
None of these covers a website session from `raw login`, which lives in the secrets file only.
Whoever can read that file can use the website as the user, until the session expires or the user
signs out there.
The rule in [AGENTS.md § Settings](../../AGENTS.md#settings) - a secret never passes through the The rule in [AGENTS.md § Settings](../../AGENTS.md#settings) - a secret never passes through the
agent - is an instruction, not a barrier. The tiers make following it the easy path. They do not agent - is an instruction, not a barrier. The tiers make following it the easy path. They do not
make breaking it impossible. make breaking it impossible.
+1 -1
View File
@@ -76,7 +76,7 @@ declares the tier it belongs to:
|------|------|-------| |------|------|-------|
| `instance` | `wikitool.json`, committed | What belongs to the corpus and is the same in every clone | | `instance` | `wikitool.json`, committed | What belongs to the corpus and is the same in every clone |
| `checkout` | `.wikitool-local.json`, gitignored | What is true only for this clone on this machine | | `checkout` | `.wikitool-local.json`, gitignored | What is true only for this clone on this machine |
| `secret` | neither | Tokens and passwords - both files hold only a reference | | `secret` | neither | Tokens, passwords and website sessions - both files hold only a reference, and a session from `raw login` none ([below](#fetch-routes)) |
Each file is a JSON object of sections, one per feature, beside two keys of its own: Each file is a JSON object of sections, one per feature, beside two keys of its own: