You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 00bb959
Browse filesBrowse the repository at this point in the historyBrowse files
feat(s135): complete slice 135 (secrets out of the data directory, roots that fail closed)
A tool the agent calls could read Trinity's own keys: the data directory was always a
filesystem root, the receipt key lived under it, and the default policy allows reads. With the
default policy, fs_read of <data dir>/keys/receipts-ed25519.key returned the key.
- Secrets leave the data directory for TRINITY_SECRETS_DIR (a per-OS default outside it); the
boot moves existing keys, the MCP bearer token and the OAuth store there, never overwriting,
and names the move on the boot receipt; keys keep their ids and earlier receipts verify.
- Trinity.Tools.FS.Guard judges every path a tool is given: /proc and /dev, any symlink, any
path under the data or secrets directory, special files and hard links are refused, and a
boot-time (dev, inode) inventory catches hard links and bind mounts; the opened descriptor is
checked again. A short deny-list runs last. A guard refusal is a hard deny no approval lifts.
- A root equal to, above or below either directory refuses boot in every profile.
- web_fetch asks once a session has read outside the roots; :regulated refuses network: :allow
without an egress allow-list.
- Every fs decision, denials included, is receipted with the canonical path and inode.
Signed-off-by: Ayla Croft <aylacroft@proton.me>
Copy file name to clipboardExpand all lines: docs/05-data-model.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -242,7 +242,7 @@ call is timed at the one place every call passes.
242
242
| receipt_hash | binary | over the canonical signed bytes |
243
243
| signed_payload | map | RFC 8785 canonical JSON. Field set is a legal-review question before Slice 024 |
244
244
| signature | binary | through the signer seam: Ed25519 by default, ECDSA P-384 in FIPS mode, ML-DSA-87 opt-in (slice 024 amendments 1 to 6) |
245
-
| key_id | string | inside the signed bytes; resolves in the key registry (as built: `<data dir>/keys/registry.json`, not`priv/`), whose row names the algorithm; the verifier reads the algorithm from there and nowhere else |
245
+
| key_id | string | inside the signed bytes; resolves in the key registry (as built: `<secrets dir>/keys/registry.json` since slice 135, `<data dir>/keys/registry.json` before it, never`priv/`), whose row names the algorithm; the verifier reads the algorithm from there and nowhere else |
0 commit comments