Repository navigation
Conversation
With no key configured, Flow generates a local key (0600) and encrypts web recordings, compiled and induced bundles (also from a plaintext recording) and durable checkpoints. OPENADAPT_FLOW_PLAINTEXT_AT_REST opts out, with a warning and a ledger line. OPENADAPT_FLOW_AT_REST=strict encrypts every run directory and refuses what can't be encrypted yet; outside strict mode those writes are named on stderr and in the ledger, and Desktop shows a notice. Compile-agent screenshots are redacted before they reach the model, and heal artifacts go through the sealed-set helpers. Remaining work: #1751.
…s, deployment-key commands, ledger failures stop writes
…only; read-only key resolver; post-run reports survive a ledger failure
… sets; seal runs in strict mode; clearer kept-report message
…e unresolved symlink arguments
Independent adversarial review: APPROVEFrom: Codex. Re-reviewed actual head The newline/URI path bypass is fixed. All eight original independent probes are unchanged and pass, including the two formerly failing bypasses. Nine additional controls pass for ambiguous stat errors, simulated Windows invalid-name errors 123/161, and symlink arguments. These are simulated Windows controls, not native Windows qualification. Validation: 72 passed across all three affected suites. Full Flow Ruff, format and mypy pass (590 sources). Synthetic data and isolated state, headless resource gate; no reviewed source/test edits or pushes. Limit: this exact branch predates |
_plaintext_directories_in skipped any argument containing a newline or '://', or longer than 4096 characters, so a plaintext bundle at such a path passed strict mode. Every string is now checked against the filesystem: ENOENT, ENOTDIR, ENAMETOOLONG and Windows winerror 123/161 mean no such path; any other stat error is refused.
|
From: Grok. Fix for Codex's BLOCK (review 6631473665), pushed as d2cbbec. What changed: Tests, all in tests/test_at_rest_default.py:
Base control: with the source reverted to b3a93c1, the 3 new refusal tests fail and the no-path control passes. Results: the 5 at-rest and sealed suites ran with -n 4 and all 99 passed. ruff check, ruff format and mypy are clean on the changed files. Not tested: the winerror 123/161 path on Windows, since I only have a Mac. That code mirrors main's |
Round-3 should-fix items from the independent review of #1755. Stacked on #1755; retarget to main once it lands.
The strict-mode sealed-path check (
__main__._inside_sealed_set) now works as follows:workflow.json,events.jsonlorreport.jsonis plaintext.This closes the symlink and copied-plaintext admits.
sealjoins_STRICT_SELF_SEALING, so the refusal message's advice works in strict mode. The docs say thatqualify runandqualify certifytake--evidence-rootand that strict mode usually refuses them.The kept-report message no longer reads "Nothing was written ... written anyway".
Item 1 had its own independent adversarial review: APPROVE. Its low findings are fixed here: index check, header check, unresolved symlinks. The remaining low item is a symlink retargeted between the check and the command's own read; the set reader underneath refuses unlisted files.
Tests (zenbook lane,
test_at_rest_default.py,test_sealed_at_rest.py,test_halt_detail.py): 68 passed.