Use secrets in conversations - #113
Merged
Merged
Conversation
nishu-builder
force-pushed
the
codex/conversation-secrets
branch
from
August 19, 2026 21:31
d2a2261 to
fb6f518
Compare
nishu-builder
force-pushed
the
codex/conversation-secrets
branch
from
August 19, 2026 23:58
75c1b6c to
8e19db9
Compare
nishu-builder
changed the base branch from
main
to
codex/constrained-secret-readers
August 19, 2026 23:58
nishu-builder
force-pushed
the
codex/conversation-secrets
branch
from
August 20, 2026 00:36
8e19db9 to
cc41fd0
Compare
nishu-builder
changed the base branch from
codex/constrained-secret-readers
to
codex/sub-run
August 20, 2026 16:29
nishu-builder
force-pushed
the
codex/conversation-secrets
branch
from
August 20, 2026 18:34
269b79d to
8e2bfab
Compare
nishu-builder
force-pushed
the
codex/conversation-secrets
branch
from
August 20, 2026 18:52
8e2bfab to
398e0cb
Compare
nishu-builder
force-pushed
the
codex/conversation-secrets
branch
from
August 20, 2026 20:08
398e0cb to
1670ca7
Compare
nishu-builder
force-pushed
the
codex/conversation-secrets
branch
from
August 20, 2026 21:08
1670ca7 to
ba030a3
Compare
malcolmredheron
added a commit
that referenced
this pull request
Aug 20, 2026
Drops nothing of ours. The only conflict was an import list in `std/llm-step/src/main.rs` — our side added `eval_then_catching`, main's added `secret` — resolved by taking both. `Fix TUI clippy regression (#133)` supersedes the `#[allow]` reverted in a1ddfbd: it takes `SubmitMessagePolicy` where the function was taking `require_absent`/`proposal` loose and packing them into that struct two lines later. Seven arguments, no suppression. A suppression that outlives its cause is worse than none — the next reader takes it to mean "these arguments travel together" when one of them was two arguments wearing a trenchcoat. Also arriving: `Use secrets in conversations (#113)` and `Guide TUI users through secret setup (#131)`, which move the secret store this branch threads through `ClientEvalHost::mark_curry` and the eval memo key — worth the full gate rather than an assumption. Verified on the merged tree: nix build, lint-flake-src.sh, cargo build/clippy/fmt/test, `cargo doc -D warnings`, and `CAOS_SALT=$(date --iso=s) run-tool test` — 45/45.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.caos-secretsstore for TUI,talk, andchatconversation worksecret-hashenters ArgTreessub-runprimitive from Preserve run context for detached sub-runs #122 for detached subagent conversations, preserving the parent stack and complete server-side secret store without delegating secret material through workersDependency
This PR stacks directly on #122. That PR replaces worker-side
run-asyncwithsub-run: the worker sends only the prepared child request and its short-lived parent job nonce, and the server recovers the in-flight parent context before starting the detached child.Constrained reader arguments are intentionally separate in #121. This PR continues to use the existing path-only reader syntax.
Configuration
caos-cli secretscreates the randomentropy=used for cache isolation.Security model
The raw secret value and entropy do not enter an ArgTree, cache key, curry, worker image, runner payload, or Git object. The server holds them in ephemeral run context and injects a value only when the concrete worker request contains a configured reader ArgTree and the matching
secret-hash.A subagent child is authorized independently against its actual request. The child keeps the identity-bearing
run-and-update-ref-imageargument so it remains a superset of the configuredllm-stepreader; a separatesubagent=truemarker disables nested subagents. No delegated-secret field, header, or serialized grant remains.Validation
cargo fmt --all -- --checkcargo test --workspacenix buildCAOS_SALT=$(date --iso=s) result/bin/caos-cli run-tool test: 44/44 passed, includingllm-subagentandsub-rungit diff --check