fix: harden credential and runtime trust boundaries - #916
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
a14f828 to
08bda08
Compare
|
Audited this against current It is not superseded by #917That was my working assumption going in, and it was wrong. #917 resolved the inbound management principal — who may call the star route. This authenticates the CLI's outbound management listener — whether the thing answering on the port deserves the admin token. Different boundary. The reviewer confirmed the outbound path still misbehaves on current Keep
Do not land as written
ConflictExactly one file: What I am not doingNot rebasing this for you, and not marking it ready. The four defects it closes are real and reproduced, but they touch authentication, credential handling, and the durable launcher — the exact surface Full disposition, including the per-hunk table, is in Thanks @Ingwannu — the listener attestation in particular is a hole nobody else had noticed. |
|
Rebased onto current The four defects are real. I confirmed them by probe against Kept, all five hunks: Vertex location validation at both the adapter and the management write boundary; durable Bun runtime provenance with the Bun-side override reselection removed; local management listener attestation; proof-bound Claude destination provenance; and the corrected CI security-boundary comment plus the external approval-policy section. Changed — I narrowed it rather than dropping it, because the two slot classes are not symmetric. Changed — two structure docs. Not merged, and not by my decision. #936 stays draft pending explicit maintainer security review. Your authorship is preserved on the original commits. If you disagree with the |
|
Correction to my previous comment: the I had preserved ambient credentials with no launcher context, on the reasoning that the destination is pinned before they are read. That breaks on the subscription path — The suite had tested no-context credential handling and settings-hijack separately but never combined, which is why my revision passed. That combined case is now pinned: reintroducing the narrowing fails 6 tests. So the only remaining changes to your work are the two stale structure docs. The behavior is yours as written. |
|
Closing in favour of #936, which is this branch rebased onto current All four defects you found are real; I confirmed each by probe rather than by reading the description. The Vertex one is the clearest: a All five hunks are kept in #936, and your authorship is intact on the commits. The one behavior change I made to your work, I then reverted. I had narrowed the no-context fallback to preserve ambient credentials, reasoning that the destination is pinned before they are read. A security review showed that fails on the subscription path: What let my revision through: the suite tested no-context credential handling and settings-hijack separately, never combined. That combined case is now pinned — reintroducing the narrowing fails 6 tests. So the only remaining edits to your work in #936 are two stale structure docs: the #936 stays draft pending explicit maintainer security review. |
Summary
Why
Several project-controlled or unauthenticated local inputs could cross credential and executable trust boundaries. This change validates or authenticates those inputs at the earliest boundary and fails closed when provenance cannot be established.
The initial draft removed the Windows self-hosted selector too broadly. This revision restores that recently-added Bun stability path: ordinary pull requests select
windows-latest, while trustedpush/workflow_dispatchruns can selectocx-homewhen the operational switch and runner are present. The selector itself is not treated as a security control because a PR owns its workflow body. The live repository setting was corrected fromfirst_time_contributorstoall_external_contributors, so every external fork workflow requires maintainer approval before any job can be assigned; the maintenance documentation now records that invariant and the fail-safe procedure.The PATH-resolved
ghsidebar report was reviewed and excluded as a false positive under the existing local-user trust model; this PR contains no unrelated sidebar change.Validation
bun run typecheckbun run lint:guibun run doctor:gui:if-changed(no GUI changes; skipped as designed)bun run privacy:scannode --check bin/ocx.mjsgit diff --checkThe full repository run reached 7,505 passing tests. Two expectations affected by this patch were updated and now pass. One combo-failover teardown timeout remains; the exact isolated test reproduces unchanged on the unmodified
devcheckout under the same single-CPU test constraint.Review notes
This touches authentication, credential handling, GitHub Actions policy, and durable launchers. Please apply explicit maintainer security review before merge. The PR is intentionally draft and targets
dev.