fix(security): restack hourly gh subprocess isolation on latest main - #225
Conversation
|
Warning Review limit reached
Next review available in: 40 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
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 |
Purpose
Harden the repository-owned hourly commercial-readiness GitHub CLI subprocess boundary on the current protected lineage without broadening workflow authority or changing the separate credential-source policy tracked by #111.
Test-first proof and RCA
Exact RED head
e3f65a97416d9da529f4a1a5706134cd1bdaad7eadded hostile-parent and delegated-token regressions. Applicationci31591145789checked out that exact head and failed at the intended boundary becausecreateGhSubprocessEnvironmentandredactSensitiveValuewere absent and the child invocation had no explicit reviewed environment.The contract requires the shell-free
ghchild to receive only pinnedGH_HOST=github.com, deterministicNO_COLOR=1, optional non-emptyPATH, and explicit optionalGH_TOKEN. It also requires exact delegated-token removal before startup/non-zero child diagnostics can become retained text.A later current-line audit found that head
00cb236bbb4cd682728c8dc42f65274a33bfb187had accidentally preserved the final regression blob while selecting predecessor source blob2880ffde8d40ed179a9dcecd97a09b2def4ff4c5, which had the child-environment allowlist but still retained raw delegated-token diagnostics. That was a real source/test mismatch, not a merge-authority or infrastructure finding.Current GREEN source
Current exact head
b634b8349f1dd09314d6347dad695d6862a4e233is a non-forced two-parent refresh over protectedmain18cac8dcab31dd53048d5d14ad01673b5b77d141. It is zero commits behind current protected main and differs on exactly two paths:scripts/hourly-commercial-readiness.mjsblobbbde521f440626ef31ad00e81450bbb0ea57dcee;test/hourly-commercial-readiness-script.test.tsblob9602dda192b14279590f662dbbd4d097b3c4d261.The source now exports
createGhSubprocessEnvironmentandredactSensitiveValue, constructs onechildEnvironment, passes it tospawnSync(..., { shell: false, env: childEnvironment }), and redacts the exact delegatedGH_TOKENfrom startup and non-zero diagnostics before bounding. The current regression blob requires those production semantics.The five code-quality findings emitted while the deliberate RED exports were absent are resolved. Their predecessor
COMMENTEDreview is diagnostic evidence only, not approval.Exact current-head state
For exact head
b634b8349f1dd09314d6347dad695d6862a4e233:ci31595865068: queued/non-passing at the latest fresh read;reviewer-ci31595865046: queued/non-passing;Security Scan31595865079: queued/non-passing;COMMENTEDon a predecessor, not approval;Keep Draft until the unchanged exact head has terminal-success application/reviewer/security evidence and current findings/reviews are freshly re-read. No predecessor, queued, model, status, synthetic or rate-limited evidence is promoted.
Authority boundary
This repair narrows one GitHub CLI child-process and retained-diagnostic boundary. It does not redefine parent credential acquisition (#111), provision Apps/reviewers, weaken live governance, publish a release, deploy production, choose an outbound license, establish KPI/revenue/transfer evidence, or make Noema acquisition-ready.