mrkeyoor.com_
Tue 22 Sept 22:37 UTC
Automationevaluationupdated 26 Aug 2026

claude-code-security-review review

Claude Code Security Reviewer is a GitHub Action that sends pull-request changes to Claude Code, filters the resulting findings, and can post security comments on affected lines. The repository also supplies the prompt behind Claude Code's built-in `/security-review` command.

+25stars / 7d
Verdict

Our build of Claude Code Security Reviewer installed 52 packages in 17 seconds and built in 6 seconds, but the harness found no test target to run. Treat it as a second reviewer for maintainer-approved code, never as the only security gate or as a safe scanner for hostile pull requests. Pin a commit, add an outer GitHub Actions timeout, and verify that the current commit was scanned before trusting a green check.

We ran it

Lab card: what happened when we ran claude-code-security-reviewScreenshot of claude-code-security-review (github.com/anthropics/claude-code-security-review)
Install✓ · 17s52 packages · 76 MB
Build✓ · 6s
Testsn/ano test script
Known vulns0(pip-audit)
Repo42 files~7,437 lines of source · 0.3 MB · 2 CI workflows

Answers from our run

Does claude-code-security-review build from source?

Dependencies installed in 17 seconds (52 packages), and the build succeeded in 6 seconds. We cloned commit 0c6a49f into a clean Debian container with 3 CPUs and no project-specific setup.

Does claude-code-security-review have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does claude-code-security-review have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use claude-code-security-review?

Public repositories that automatically run secrets-enabled workflows on untrusted contributions: the README says the action is not hardened against prompt injection and recommends maintainer approval first.

What are the alternatives to claude-code-security-review?

CodeQL, Semgrep, OSV-Scanner. Our build of Claude Code Security Reviewer installed 52 packages in 17 seconds and built in 6 seconds, but the harness found no test target to run.

Setup3/5Short workflow, but API access and safe trigger policy are required
Docs4/5Inputs, permissions, workflow, limits, and local command are explained
Community3/56,084 stars and active reports, but code push stopped in February
Maturity2/5No release tags; open reports affect scan freshness and filtering

Who it’s for

Maintainers reviewing trusted pull requests who want an AI-generated security opinion beside human review and deterministic scanners.
Teams already using Anthropic's API and willing to pay for model analysis in CI.
Repositories whose security rules can be expressed through custom scan and filtering instructions.
Claude Code users who want to customize the built-in /security-review command.
Security engineers who will inspect the action logs and validate every reported finding.

Who it’s NOT for

Public repositories that automatically run secrets-enabled workflows on untrusted contributions: the README says the action is not hardened against prompt injection and recommends maintainer approval first.
Teams seeking a sole merge gate: open issue 120 reports that the default cache can skip new commits while the check remains green.
Users relying on advertised false-positive filtering without verifying logs: open issue 123 reports that a retired hardcoded model disabled that stage on commit 0c6a49f.
Cost-sensitive pipelines without an outer job limit: issue 124 reports a configured 10-minute scan running about 27 minutes until GitHub stopped it.
Offline or model-neutral security programs: the action requires an API key enabled for both the Claude API and Claude Code.

Setup reality

Our run installed 52 Python packages in 17 seconds and used 76 MB. The claudecode/ project built successfully in 6 seconds. No test script or target was available to the harness, so tests were skipped. Pip-audit found 0 known vulnerabilities.

The GitHub Action needs a Claude API key with both API and Claude Code access, contents: read, and pull-requests: write if it comments. The README recommends approval for every external contributor because code can contain prompt injection.

The checkout is small at 42 files, about 7,437 source lines, and 0.3 MB. It has 2 CI workflow files, no Dockerfile, and no tests directory. Pinning @main trades reproducibility for updates; use a reviewed commit SHA.

The action reviews diffs and can comment on exact lines

Claude Code Security Reviewer runs in GitHub Actions, analyzes pull-request changes, filters the initial findings, writes a JSON result, and optionally posts comments on relevant lines. The prompt covers injection, authorization, secret exposure, cryptography, unsafe deserialization, cross-site scripting, configuration, supply-chain problems, and business logic. Custom instruction files let a team add application-specific rules or change false-positive handling.

The repository is small: 42 files, roughly 7,437 source lines, and a 0.3 MB checkout. Its main Python package contains the audit runner, prompts, JSON parser, API client, finding filter, and evaluation tools. Small code size makes a pin review feasible. It does not reduce the trust placed in the called model, the action definition, transitive GitHub Actions, or the data sent to Anthropic.

A 17-second install still needs two kinds of Claude access

The sample workflow grants read access to repository contents and write access to pull requests, checks out the proposed SHA, and calls the action with a secret. The API key must be enabled for both the Claude API and Claude Code. Defaults include PR comments, result-artifact uploads, a 20-minute Claude Code timeout, and an Opus 4.1 model identifier. Every choice affects permissions, data handling, run time, or cost.

Our sandbox installed 52 Python packages in 17 seconds and used 76 MB. The claudecode/ project built in 6 seconds. Pip-audit found 0 known vulnerabilities in the installed dependencies. The repository had 2 CI workflow files, no Dockerfile, and no tests directory. A small dependency environment is welcome for a security action, but the model call and GitHub workflow remain the larger operational surface.

What happened when we ran it

We cloned commit 0c6a49f into an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Python 3.12, and no secrets. Installation and build both succeeded, taking 23 seconds combined. The checkout occupied 0.3 MB before dependencies and 76 MB after the 52-package install.

The harness found no test script or target, so it skipped tests. The README documents a pytest claudecode -v command, but our measurement rules do not permit substituting an unmeasured test result. The useful conclusion is limited: dependencies resolved, the supplied build step completed, and no test suite outcome was produced in our sandbox. Any deployment review should run the repository's documented tests and an evaluation set of known secure and vulnerable changes.

Pip-audit's 0 known vulnerabilities applies to the installed Python packages at this commit. It does not assess action logic, prompts, GitHub permissions, model behavior, or dependencies installed by other workflow steps. A security tool needs all of those layers reviewed. The absence of a dependency advisory is one clean signal, not a product-level security result.

Untrusted pull requests can instruct the reviewer itself

The README says the action is not hardened against prompt injection and should only review trusted pull requests. Anthropic recommends GitHub's setting that requires approval for all external contributors. This is the deciding boundary. Source code, comments, fixtures, and filenames can contain text aimed at the model. Running a secrets-enabled model action automatically on hostile input gives that input a place inside the review prompt.

Use a maintainer approval gate, keep repository permissions minimal, and avoid exposing unrelated secrets. Posting comments requires pull-requests: write; analysis itself only needs contents read access. The model's finding is untrusted output too. A human should reproduce the data flow or exploit path before blocking a release, and a generated remediation should receive normal review rather than being applied automatically.

Three open reports weaken green-check semantics

Issue 120, opened July 20, 2026, reports that a SHA-less cache restore prefix can load a marker from an earlier commit on the same pull request. Under the default run-every-commit: false, the reporter observed new commits being skipped while the check stayed green. The issue includes a reproduction and points to the action cache keys on main. Until fixed and verified, inspect logs for proof that the current SHA ran.

Issue 123 reports that false-positive filtering was disabled because its API preflight hardcoded a model retired on February 19, 2026. The reporter traced the failure-open path and said valid result JSON hid the warning. Issue 124 reports that claudecode-timeout: 10 did not stop a stalled call around 10 minutes; an outer GitHub timeout ended it around 27 minutes. These reports concern the reviewed commit and deserve direct acceptance tests.

February code with August issues is active discussion, not active delivery

GitHub recorded the last repository push on February 11, 2026. The latest-release endpoint returned no release, so there is no versioned artifact to compare with main. GitHub showed 6,084 stars and 81 open issues and pull requests. Issue and pull-request activity continued through August, including reports about timeout enforcement and an unnecessary GitHub CLI installation step.

That combination is mixed: users are still testing and proposing changes, while the default branch had not moved for more than 6 months. Pinning commit 0c6a49f is reproducible but preserves the cited open behavior. Following @main will pick up future changes without review. For security infrastructure, fork or pin a checked commit and advance it only after the cache, filtering, timeout, and prompt-injection controls pass your own fixtures.

Claude's review belongs beside deterministic scanners

A model can connect code paths that a simple pattern misses and explain a finding in language a developer can act on. It can also overlook a flaw, misunderstand framework guarantees, or accept instructions embedded in the diff. CodeQL and Semgrep provide repeatable query or rule results; OSV-Scanner covers known dependency advisories. Those tools answer different questions and make better hard gates.

Use Claude Code Security Reviewer as an additional opinion on approved changes. The 23-second install-and-build result makes experimentation cheap, while the missing measured tests and open correctness reports argue against authority. Require evidence that each SHA was scanned, cap the whole job, retain results for audit, and make a person responsible for deciding whether a reported vulnerability is real.

Alternatives

ProjectWhat it isPick it when
CodeQLGitHub's query-based static analysis engine for supported programming languages.pick this instead when reproducible data-flow analysis and a maintained query suite should enforce the merge gate.
SemgrepA static analyzer with code, dependency, and secrets rules that can run locally or in CI.pick this instead when findings must come from explicit, repeatable rules rather than model judgment.
OSV-Scanner gh↗A dependency and container vulnerability scanner backed by the OSV database.pick this instead when the immediate need is known dependency vulnerability detection, not semantic code review.

What people are saying

  1. [github-trending] anthropics/claude-code-security-review

Sources

  1. Claude Code Security Reviewer README
  2. Issue 120: stale cache can skip commits
  3. Issue 123: false-positive filter disabled
  4. Issue 124: timeout not enforced
  5. Repository activity

More automation reviews

linkedin-skills · ax · newsjack · easyeda-agent · dagger · youtube-dl-gui · the whole board →