Skip to content

(MOT-3732) feat(security-scan): add scan controls and GitHub remediation - #826

Open
rohitg00 wants to merge 5 commits into
feat/security-scanfrom
feat/security-scan-interactive-remediation
Open

(MOT-3732) feat(security-scan): add scan controls and GitHub remediation#826
rohitg00 wants to merge 5 commits into
feat/security-scanfrom
feat/security-scan-interactive-remediation

Conversation

@rohitg00

Copy link
Copy Markdown
Contributor

Summary

  • add cancel, composer-model, and analysis-chat follow so a started scan can be stopped, uses the open chat model, and switches to the Security review session
  • add recommended-fix follow-up plus approval-gated GitHub issue and draft fix-PR actions through existing github worker functions
  • keep analysis unattended for allowlisted read functions, fail closed on GitHub mutations, and sanitize reports before persistence
  • polish the injectable dashboard for narrow Console panes and honest error text

Test plan

  • Start a scan with a blank SHA and confirm the form says entire-repo analysis at HEAD
  • Confirm the scan uses the composer model and the Console switches to the Security review chat
  • Cancel an in-flight scan from the dashboard
  • On a completed report-only run with findings, use Get recommended fixes
  • Create a GitHub issue from a finding and confirm Approval Gate still holds the mutation
  • Create a draft fix PR from a suggest finding and confirm it stays gated

Fixes MOT-3732

Stacked on #807. Uses optional Console host chat APIs from #823. Calls existing github worker functions; no github/ source changes.

@vercel

vercel Bot commented Aug 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
workers Ready Ready Preview Aug 18, 2026 10:51am
workers-tech-spec Ready Ready Preview Aug 18, 2026 10:51am

Request Review

@coderabbitai

coderabbitai Bot commented Aug 17, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4eb64845-7792-4329-b5d3-f889e95aa71f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

skill-check — worker

0 verified, 62 skipped (no docs/).

Layer Result
structure
vale
ai
render

Four for four. Nicely done.

…and drop every UI timer

The page could not choose a model. It read the open chat composer on a
750ms interval and sent whatever it found, so a scan started from a
standalone security-scans tab silently fell back to the operator default,
and a composer left on a weak model quietly decided the review.

The sidebar now lists the live router catalog. Selecting an entry pins that
model for the scan; `follow chat` keeps the previous behavior and is still
the default. A pinned model that leaves the catalog reverts to following
rather than sending an id the router no longer serves. The catalog is
re-read on the router's own `router::models::changed` fan-out, so a
credential added or a provider removed updates the list without a reload.

The same pass removes the page's remaining timers. Run updates already
arrive on the `security-scan:runs` doorbell; the 2s/10s/30s sweep behind it
is gone, and the list now re-reads on the doorbell, on reconnect, on the tab
becoming visible, and on the refresh control. The action store drops its
bounded fallback reads for the same reason, and the analysis-chat follow
drops its 750ms retry: the `session::created` binding it already held is the
only other thing that can change the answer.

A configure control opens the console's own worker-configuration dialog for
the analysis budgets (`max_turns` and the token and cost ceilings), the
operator model, and the repository allowlist. It is read off
`host.components` at runtime, so a console predating that export degrades to
navigation instead of failing the module load.
…curity-scan-live-model-picker

# Conflicts:
#	security-scan/README.md
#	security-scan/ui/src/page/index.tsx
#	security-scan/ui/src/page/useSecurityRunsLive.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant