feat: add Codex-native React Doctor loop - #1614
Conversation
Interactive terminal E2ETerminal Control verified the built CLI at
|
commit: |
|
React Doctor found no new issues. 🎉 Reviewed by React Doctor for commit |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 566a520. Configure here.
| !/run-daytona-eval\.mjs/.test(command) | ||
| ) { | ||
| deny("Run Daytona only through the bounded run-daytona-eval.mjs wrapper."); | ||
| return; |
There was a problem hiding this comment.
Daytona wrapper easily bypassed
High Severity
The PreToolUse Daytona gate only matches nr ... eval or the substring packages/evals. Commands such as pnpm --filter @react-doctor/evals eval never hit that check, so the agent can run unbounded evals outside run-daytona-eval.mjs and skip the daily limit and credential scrubbing.
Reviewed by Cursor Bugbot for commit 566a520. Configure here.


Summary
CODEX_HOME, with no API-key fallback or committed credentialsloop/*branches and draft PRs while blocking merge, release, publish, tag, auth mutation, and unsafe push actionsValidation
No live Codex inference or Daytona evaluation was run as part of this change.
Note
Medium Risk
New agent automation that can create PRs and run Daytona evals while reading DAYTONA_API_KEY from
.env.local; risk is mitigated by fail-closed hooks, draft-only PR rules, and daily/concurrency budgets.Overview
Adds a Codex-native
react-doctor-loopplugin that turns confirmed React Doctor false-positive cohorts into validated, review-only draft PRs—without a separate CLI driver.Activation and safety live in Codex hooks: the loop turns on from
$react-doctor-loopprompts, then blocks merge/ready, release/publish, force or main pushes, auth mutation, secret reads, and non-draft/[loop]PRs. Stop only advances aftercomplete.mjsverifies aloop/*branch, required evidence (tests, fuzz, coverage ledger, RDE parity), allowed path prefixes, and an open draft PR.Daytona access is funneled through
run-daytona-eval.mjs, which injects onlyDAYTONA_API_KEY, strips other credentials, and caps runs (2/day, ≤2k repos, concurrency 200, 30 minutes). The skill documents the audit → narrow fix → prove → draft-PR gold path; marketplace +.gitignoreupdates track the plugin and ignore local loop state.Reviewed by Cursor Bugbot for commit 566a520. Bugbot is set up for automated code reviews on this repo. Configure here.