Repository navigation
fix(security): stabilize standalone pairing for Child enrollment - #6517
Conversation
Keep paired-only join authorization. Allow the existing attested CLI grant flow only for the configured literal loopback origin in standalone mode, with runtime address/port checks, a kernel-local redemption peer, one-use codes, fixed five-minute sessions, and role/origin invalidation. Ordinary automatic sessions remain unpaired. Expose explicit code entry during local link setup. Omit stale shared credentials only for the pairing exchange, retaining separate machine-relay credentials and normal API authentication. Add grant/session negatives, a real CLI-capability/session-control/guarded-route composition test (SSH join stubbed), and browser transport/form regressions. Validation here: complete session/capability modules with relevant auth helper excerpts: original 3 pass/4 fail, patched 7 pass/0 fail. Complete browser API module with a minimal Window adapter: original 0 pass/2 fail, patched 2 pass/0 fail. All changed TS/TSX files syntax-transpiled. Full Bun, React, repository typecheck, full server HTTP transport and native SSH/restart suites were not run locally. Independent security review and exact-head CI remain required; keep this PR in Draft.
Carries source PR #6076 with original history; preserves standalone operator pairing and paired-only Child join. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
(cherry picked from commit 29a9e91)
Exercise production discovery, capability mint, redemption, replay rejection and guarded Child admission with isolated subprocess state.
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
📒 Files selected for processing (39)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Deterministic PR hygiene checks passed. |
✅ READY
Hygiene✅ Deterministic PR hygiene checks passed. |
Retain standalone pairing carry and its unique real-HTTP regression after shared registry normalization and upload integration.
|
Technical disposition for the reviewed replacement #6517 at The original unreachable-standalone objection is addressed. An actual standalone CLI command now mints a process-attested, short-lived one-use grant for the configured literal-loopback origin; production HTTP redemption creates a paired session. The new A separate isolated macOS source exercise completed real browser redemption, OpenSSH host verification, join HTTP 202, old-process exit, replacement on the original port, authenticated tunnel and matching persisted Child state. Old sessions/grants were refused after transition, and owned resources were cleaned up. It used a synthetic empty Home catalog and scratch-only Codex integration; it does not prove fresh-install catalog creation, model inference, installed packages or native Windows/Linux enrollment. The final acceptance path was uninstrumented. The tested pairing boundaries at Independent exact-head coordinator security review accounted for all 39 files and found no verified P0–P2 defect. This is a process/CLI authority boundary, not proof of human presence or protection against a same-user process capable of invoking that authority. Required replacement-head CI passed at https://github.com/lidge-jun/opencodex/actions/runs/37135315210; inspected screenshots are linked in #6517 by immutable pr-assets commit. I am recording the concrete technical conditions as resolved for the replacement and resolving this original reachability thread on that evidence. Ingwannu's historical CHANGES_REQUESTED review is not withdrawn, dismissed or represented as an approval; this is not approval of the stale original PR head. The owner-authorized replacement integration decision remains separate, and final integrated regression/release gates still apply. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Owner-authorized progressive maintainer integration into dev for release stabilization; this is a separate integration/security decision, not self-approval or dismissal of another maintainer's historical review. The original source6076 technical objection is resolved by the reachable process-attested standalone CLI grant, real HTTP redemption and paired join admission, plus typed GUI denial/recovery guidance. The evidence-backed condition mapping is recorded above and in the source review-thread reply; that original reachability thread is now resolved. Ingwannu's historical CHANGES_REQUESTED review remains intact and is not represented as withdrawn or approved. Independent coordinator review accounted for all 39 files at this head and traced capability issuance, exact origin/peer/method/process binding, bounded one-use redemption, fixed local paired expiry, live session revalidation, CSRF, role/port gates and browser transport separation. No verified P0–P2 defect remained. Explicit security review: PASS for that scoped boundary. Local process/CLI authority is not proof of human presence and does not claim resistance to a same-user process able to exercise that authority; existing Home apply/probe powers are not widened or represented as fixed here. Main inspected the retained native receipts and safe screenshots: real source CLI/browser/OpenSSH join returned202, the original process exited, an uninstrumented replacement owned the configured port, its tunnel owner and durable Child link matched, and old sessions/grants were refused. Owned processes/listeners/keys were cleaned up. The exact tested pairing boundaries are unchanged from58ad to this head. This uses a synthetic empty Home catalog and scratch-only Codex integration; it is not fresh-install catalog generation, inference, npm-installed or native Windows/Linux/desktop proof. Diagnostic preload attempts are excluded. Immutable screenshot links satisfy the UI evidence requirement. The new CLI/HTTP regression avoids injected paired authorization and retains negative cases. Focused boundary checks, full GUI tests, lint/i18n/build, type/privacy/structure and docs checks passed. I reviewed the newer Anthropic identity integration for overlap; it does not modify the pairing/enrollment boundaries. The prospective merged tree passes actual repository line caps and both layout-map parity checks. Final independent integrated regression and full cross-platform candidate CI still precede production publication. The optional external CodeRabbit review context is still pending and is not counted as a passing review. Current-head independent review is complete and every currently published finding is resolved; post-merge/final review checks remain mandatory. Hosted receipt: https://github.com/lidge-jun/opencodex/actions/runs/37135315210, attempt 1, pull_request, tested head |
Summary
dev, retaining its original commits and authorship. Child join requires an operator-paired dashboard session; standalone enrollment uses the configured literal-loopback origin, a short-lived one-use grant and existing process attestation. The dashboard explains pairing, runtime-role and port refusals separately.409 host_not_confirmedwithout substituting HTTP dispatch, session control orjoinHome.29a9e91f400d24ac746a18dfe3af357f5da6dec3with-xprovenance, plus this test's unique registrations.This is a Draft carry. The source PR's outstanding maintainer review is retained for coordinator disposition; this lane does not withdraw another maintainer's review. Its technical enrollment and independent security requirements now have the bounded evidence below. The source PR remains open; this lane does not merge or release.
Co-authored-by: luvs01 27862058+luvs01@users.noreply.github.com
Verification
Local evidence for the carried runtime and new regression:
bun test tests/gui/gui-pair-capability.test.ts tests/gui/gui-pair-client.test.ts tests/server/link-join-route.test.ts tests/server/link-management-routes.test.ts tests/server/server-management-auth.test.ts tests/server/management-route-registry.test.ts— 135 pass, 0 fail.bun test tests/gui/gui-pair-http.test.ts— 1 pass, 43 assertions. Real source CLI mint and listener redemption; unpaired403 forbidden,pairing_required, paired status, replay/origin/alternate-credential/CSRF refusals, and paired409 host_not_confirmed. Owned subprocesses and temporary state cleaned up.bun test tests/test-layout.test.ts tests/test-layout-tooling.test.ts tests/ci-workflows/file-size-ratchet.test.tsafter shared normalization — 27 pass, 0 fail.local-link-pairing,connect-pairing,remote-link) — 52 pass, 0 fail; GUI lint, i18n lint and production build passed. Build reported the existing large-chunk warning.bun run typecheck,bun run privacy:scan,bun run structure:check, documentation production build andgit diff --checkpassed. Docs built 561 pages and checked 77,932 internal links.58ad4971df220976f8ecb1f79a8883a4e0874031. Current deve601cefcebcc20b2e04a04821ab45df6538d98f9, including merged auth PR fix(codex): classify revoked native sessions without stale attribution #6515, was reconciled asef743072838bc29626dd5b8490efa78f4ff82d9f. Pairing, management auth/CORS, dispatch, GUI, client and link boundary paths are unchanged from the demonstrated native source. The post-B union passed 172 focused tests (1,929 assertions), typecheck, privacy and structure checks; independent interdiff security review passed. The native scenario itself was not rerun on this new head.Full-local-suite exception: concurrent release worktrees share host resources. Focused regressions above were run; no full local suite or
test:changedresult is claimed. Applicable required CI must complete for the final current head; results from earlier heads are historical only. Packaged desktop, other native platforms, model discovery and inference remain unverified. CI event, tested SHA/tree, run and attempt evidence will be recorded after completion. The integration coordinator owns the final combined-lane regression and merge.Checklist
UI evidence
Visually inspected screenshots from the isolated macOS source fixture. No pairing code, session token or account data is visible. The original tested boundary source at
58ad4971is unchanged in the currentef743072integration; this is not packaged/Windows acceptance.Summary by CodeRabbit