Cyberjury
AI-assisted security review for code diffs and repositories.
The tool has two review paths:
- Diff Review audits a git range against its repository in one command.
- Repository Review fans out across a repository, reviews focused units, and deduplicates candidates.
Diff Review is fast and reports findings at post change lines shown in the patch. Every finding keeps an exact old or new change anchor, so added behavior and removed controls use one scope contract. Each diff unit is grounded with repository source context while its reportable boundary remains the patch. Repository Review covers the complete repository as focused units, so a clean Diff Review does not by itself clear the repository.
The review contract is data. One language-independent security reasoning kernel, one severity
rubric, and the file classification rules live in src/cyberjury/review/contract/. Language
support is the Tree-sitter query data in src/cyberjury/review/syntax/queries.yaml. A language
without queries is still reviewed from its raw source. Each review records a hash of these files
in contract.json.
A Repository Review of a Git work tree covers the tracked files and the untracked files Git does not
ignore. A plain directory is covered completely. Files that are not UTF-8 text, binary, or empty are
listed as skipped in outcome.json.
Quick Review
cyberjury review diff --repository /path/to/app --git-range origin/main...HEAD
cyberjury review repository /path/to/repo
Re-running a repository review resumes open work. Use --fresh to start a new review session.
Output and Exit Codes
Review commands print a JSON result and return a process style exit code. 0 means the requested
action completed. Exit code 1 means the run was degraded or incomplete. Every finding the finder
reports is kept, and the review does not run a second model to delete findings.
Diff and repository reviews write findings.json and outcome.json in the review
attempt workspace.
findings.json also groups findings into issues: findings that one code change fixes. Grouping
never removes a finding, and each finding names its issue_id. Findings of one category at the same
file and line form one issue. Other findings form one issue only when their cited source traces the
other's location and the model answers that one code change fixes both.
Install
Requires Python 3.12 or newer. The base install includes tree-sitter and the grammar packages.
pip install cyberjury
cyberjury install-slash-command
The cyberjury install-slash-command command installs /cyberjury-review for Claude Code and Codex.
Configure
All model settings come from a .env file in the working directory. An exported shell value wins
over the file. Copy .env.example to .env and fill in what you use:
| Setting | Meaning |
|---|---|
OPENAI_API_KEY |
OpenAI key. When it is set the review uses OpenAI. |
ANTHROPIC_API_KEY |
Anthropic key, used when no OpenAI key is set. |
CYBERJURY_MODEL |
Model name, default gpt-5.6 for OpenAI and claude-opus-5 for Anthropic. |
CYBERJURY_API_BASE |
Gateway or proxy endpoint for the provider. |
One model finds the issues and also answers the issue grouping question, so use the strongest model you can.
Metadata
Release files for cyberjury 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cyberjury-0.2.0.tar.gz | 144.6 kB | With provenance | Details for cyberjury-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| cyberjury-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for cyberjury-0.2.0-py3-none-any.whl |
Total release size: 303.2 kB
Release files / cyberjury-0.2.0.tar.gz
| Download URL | cyberjury-0.2.0.tar.gz |
|---|---|
| Size | 144.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
97a8bbff8b22fa7cca398d6940dccb7840fe0d0eb3016794f278f45c6efcffc0
|
|
BLAKE2b-256 checksum How to use checksums |
8ad9a8eaaf96e3922b83e3cbb917c7e118bd1a42ef7e01b70286ff5ba6a2198f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / cyberjury-0.2.0-py3-none-any.whl
| Download URL | cyberjury-0.2.0-py3-none-any.whl |
|---|---|
| Size | 158.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
feeb5535436ae44e03938cd4f67d7f07ab6fdee7fee2aed749dbae1e80f56d36
|
|
BLAKE2b-256 checksum How to use checksums |
db3136bc05e3b6ba8f4fcd25cbd8304a9c11d6063a10e0606c4889b7063b4ce7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logSecurity for cyberjury 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for cyberjury-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.