Repository navigation
security: protect persisted history and scope approved file access - #454
Merged
Merged
Conversation
…curity-combined-validation
Preserve human workflow explanations while keeping JSON and NDJSON stdout parseable. Extend the real-binary refusal control to parameterized workflows in all output formats. Refs #456.
Broccolito
marked this pull request as ready for review
October 24, 2026 12:53
This was referenced Oct 24, 2026
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.
Behavior and user impact
An agent working in Project A can ask for access to a specific folder in Project B, receive a scoped human decision, and continue the original read or edit in place. The working directory stays Project A. Users can choose Allow once or Allow for this session, inspect and revoke grants, and receive actionable recovery guidance. A pathname, connector result or model-supplied identifier supplies no authority by itself.
Supported file operations retain directory authority through validation and I/O. Session history and undo snapshots receive ownership and permission checks; Smart Approve decisions apply only to the invocation reviewed. Most enforcement is in the backend. Visible changes are folder prompts, grant management, accurate lifetime wording and recovery messages. Existing tool names and file arguments remain available.
Published head
14b68c9b519255730923c7545c689b97187892c4: full localjust check-everything, including mandatory Clippy, passed; exact-head CI finished 18 SUCCESS / 1 SKIPPED. Actual macOS runtime evidence remains attributed to frozenf227d13d26f2bbbab8f70637173943617976eced. The sole f227→14b change is a reviewed test assertion waiting for asynchronous state publication; the remaining tracked tree and six protected runtime binaries are unchanged. Runtime artifacts have not been relabelled as 14b builds.Implementation
--explainstdout. Unattended refusals carrypermission_denied,retryable=falseand neutral “Access was not approved” wording.Shared file access, dispatch, storage startup, history and approval plumbing change substantially; the agent loop and public tool interfaces remain intact.
Windows compatibility
Typed
NtCreateFilecaptures and leases the retained directory object without unchecked pathname reopening. An idle exact captured folder can move without authorizing its replacement. Windows can refuse moving an ancestor while a captured descendant is open; active operations also hold short move-preventing leases. Finish/stop work and await completion, revoke affected external grants, then retry after holders release handles. Workspace/skill roots or other clients may require changing workspace or stopping their owning backend. Closing a browser/external-backend interface is not a handle-release guarantee.Validation
just check-everythingpassed. Exact-head CI and associated frontend/storage/apps checks: 18 SUCCESS, 1 SKIPPED. PR-job checkout is merge49fb26d06a686a742fddd8f54defd18928aaf238, parents main48c154d4+ 14bThe f227 14-command focused checkpoint also passed. Its WebSocket selection of 5 includes 4 shared guards; unattended-caller selection of 7 includes 4 shared guards; the one real-binary output regression contains 6 input/format subcases. Regression totals, repeated storage controls, case receipts, sessions and matched pairs are distinct denominators, not attack-success rates. Codex operated normal UI controls; the app used a deterministic synthetic provider for the tool sequence. Connector controls exercised real registrars, stores, waits, pagination, expected failures/cancellation and original-path consent without production databases or real PHI. Both connector PRs are merged; their mains retain 3/3 green checks.
Historical failures remain preserved through the audit evidence, integration notes and separate raw receipts: 971 CI ended 16/2/1; f227 CI ended 17/1/1 with the Crew assertion subsequently corrected in 14b. Earlier restart #455, CLI #456, incomplete trials, f9/448 full-check failures and UI pretriage failures are retained. Frozen ACA 19 scenarios/162 pairs and prior storage cohorts are not pooled with these final cohorts.
Limits and remaining completion steps
The assessment uses synthetic data and ordinary outside/separate non-root actors. It does not establish comprehensive security, HIPAA compliance, unrestricted shell/computer isolation or live-model adversarial robustness. Same-account hostile code, root/admin/SYSTEM and historical handles are outside the demonstrated boundary; network filesystems are unverified. SQLite is not a custom race-proof VFS; patch preflight is not transactional rollback. Cancellation/revocation does not undo completed effects: both cancelled connector jobs retained private 69-byte partial CSV files.
Actual headed acceptance is macOS. All-windows/tray behavior, seamless backend retarget within the same Electron process, a separate two-native-app workflow and optional browser-backend restart were not exercised. Software tests cover additional ownership/isolation paths; browser reload is not native-client expiry. Final runtime cleanup is recorded separately. Root review, deliberate issue acceptance/closure, merge, post-merge main CI and manuscript/supplement publication remain distinct completion steps.
Genuine Opus 5.5/Sonnet 5.5 requests failed gateway signature validation before generation. A catalog-listed 4.6 matching-factory control had the same failure, consistent with shared authentication/signing failure; root cause remains unknown. No successful live 5.5 response, tool round trip or availability conclusion is claimed.
Refs #424, #436, #437, #445, #446, #447, #452, #453, #455, #456; no automatic closing references.
AI assistance