╔═══════════════════════════════════════════════════════════════════════════╗
║ ║
║ ██████╗ █████╗ ██████╗ ████████╗ ██████╗ ██████╗ ║
║ ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗ ║
║ ██████╔╝███████║██████╔╝ ██║ ██║ ██║██████╔╝ ║
║ ██╔══██╗██╔══██║██╔═══╝ ██║ ██║ ██║██╔══██╗ ║
║ ██║ ██║██║ ██║██║ ██║ ╚██████╔╝██║ ██║ ║
║ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ║
║ ║
║ Autonomous Offensive/Defensive Research Framework ║
║ Based on Claude Code (v3.1.0) ║
║ ║
║ Gadi Evron, Daniel Cuthbert, Thomas Dullien (Halvar Flake) ║
║ Michael Bargury, John Cartwright ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════╝
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣀⣀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⠿⠿⠟
⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣤⣴⣶⣶⣶⣤⣿⡿⠁⠀⠀⠀
⣀⠤⠴⠒⠒⠛⠛⠛⠛⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⣿⣿⣿⡟⠻⢿⡀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⢿⣿⠟⠀⠸⣊⡽⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⣿⡁⠀⠀⠀⠉⠁⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⠿⣿⣧⠀ Get them bugs.....⠀⠀⠀⠀⠀
Authors: Gadi Evron, Daniel Cuthbert, Thomas Dullien (Halvar Flake), Michael Bargury, John Cartwright (@gadievron, @danielcuthbert, @thomasdullien, @mbrg, @grokjc)
Licence: MIT, see LICENSE. CodeQL and other third-party components have their own licence terms; see third-party notices and dependencies.
Repository: https://github.com/gadievron/raptor
What is RAPTOR?
Built by hackers, for hackers.
RAPTOR is an autonomous security research framework built on top of Claude Code (but not tied to it -- you can plug in your own analysis layer too). It chains together static analysis, binary analysis, LLM-powered vulnerability validation, exploit generation, and patch writing into a single workflow you can run against a codebase or binary.
It is not polished software. It was built in free time, held together with enthusiasm and duct tape, and it works well enough that we can't stop using it. If you want to make it better, open a PR.
RAPTOR supports security research and human review; its reports do not certify that a codebase is secure.
RAPTOR stands for Recursive Autonomous Penetration Testing and Observation Robot. We really wanted to call it RAPTOR.
How it's built
RAPTOR is mostly AI-generated code. The humans set direction, review output, and make design decisions; the AI writes the implementation. Mechanical verification (tests, static analysis, corpus calibration) keeps the quality bar where it needs to be regardless of who — or what — wrote the code.
Start here: Capabilities · Quick start · First run · Security · Documentation
What RAPTOR can do
- Take a codebase from first look to candidate fixes. Map its attack surface,
/agentic; use
/understand or standalone /audit when you need a focused investigation.
- Check what your software ships with. Inspect application dependencies,
/sca.
- Investigate an unfamiliar binary or a crash. Recover entry points and
/binary, /fuzz, and /crash-analysis.
- Test running applications. Explore web endpoints with
/weband inspect
/frida.
- Investigate an open-source project's history. Correlate GitHub activity,
/oss-forensics.
Maturity varies by workflow. The complete catalogue lists commands and their status; the workflow index helps you choose a starting point.
Why RAPTOR?
- LLM-assisted false-positive filtering. Semgrep, CodeQL, and other tools
- An audit engine beyond scanner output. Hypothesis-driven investigation
/agentic uses audit capabilities within its workflow; standalone
/audit offers a dedicated systematic review. See the audit engine.
- Eight-stage exploitability validation.
/validateinvestigates whether a
- Broad software composition analysis. Dependencies, container packages,
- Connected source and binary evidence. Runtime traces, fuzz witnesses, and
- A custom, purpose-built sandboxing layer. RAPTOR isolates generated PoCs,
- Research that accumulates. Projects retain
Security model
The repository being analysed can attack the analyst: through malicious code, repo-controlled configuration, prompt injection, or content rendered in a report. RAPTOR addresses those surfaces with several boundaries:
- Layered process isolation. The custom sandbox combines Linux namespaces,
- Restricted host access. Untrusted-execution policies keep target inputs
- Controlled egress. Tool policies block networking or route it through an
- Credential separation. The launcher-managed LLM dispatcher holds provider
- Startup and configuration checks. Launcher preflights inspect repository
- Agent capability and consent boundaries. Tool restrictions and attendance/
- Adversarial input and output handling. Source excerpts are treated as
Prompt injection remains possible. Guarantees differ between untrusted execution, trusted-tool entry points, platforms, and operator-selected profiles; these controls are not a claim that all agent actions are isolated. Containers add a deployment boundary. See sandbox guarantees and limitations, agent security, the threat model, and WSL requirements for the exact contracts and residual risks.
Prerequisites
- Manual checkout: Python 3.12+, uv, and the
- Interactive shell: Claude Code with an active subscription or an
- Standalone CLI: Claude Code is optional. LLM-assisted analysis needs a
See installation and dependencies for platform requirements and optional tools.
Accounts and costs
The shell's Claude Code login is independent of the credentials used for finding analysis, which can use Claude Code, another provider, or a local model.
Subscription-backed Claude Code analysis has no separate API bill; API-backed
Claude Code and external providers follow their backend's billing. The source-review
examples below each set a $5 main-run ceiling (/agentic defaults to $10).
Optional helpers have separate ceilings, so this is not an end-to-end cap
across all processes.
See model setup and billing for details.
Offline operation requires prepared
tools/data and appropriate egress controls.
Quick Start
Option 1: Install manually
Run in your terminal:
git clone https://github.com/gadievron/raptor.git
cd raptor
uv sync --locked
source .venv/bin/activate
npm install -g @anthropic-ai/claude-code # if not already installed
uv tool install semgrep
export PATH="$PATH:$PWD/bin"
raptor
Use the raptor launcher from any directory. It loads RAPTOR's configuration,
performs pre-flight checks, tracks coverage, and remembers your caller directory.
For persistent PATH setup, launcher flags, and optional installation protection,
see manual installation.
Option 2: Run in a container (recommended)
The image includes analysis, fuzzing, and browser tooling. It is large and
expects this checkout mounted at /workspaces/raptor. Run in your terminal:
git clone https://github.com/gadievron/raptor.git
cd raptor
docker pull danielcuthbert/raptor:latest
docker run -it \
-v "$PWD:/workspaces/raptor" \
-v "/path/to/target-folder:/workspaces/target" \
danielcuthbert/raptor:latest
Replace the target path with your own; omit that mount if you do not need it.
Inside the container, run raptor. Local image builds, VS Code devcontainers,
CodeQL provisioning, and debugger-specific requirements are covered in
container installation.
What to expect on a first run
Use slash commands inside a RAPTOR session; run Python commands in your terminal from the checkout with its environment activated.
Source code
/agentic /path/to/code --max-cost-usd 5
Read agentic-report.md and the generated PoCs and patches in the run directory.
Patches are not applied to the target. Expect minutes to tens of minutes, depending on
the target and model. See workflow and outputs.
For a mechanical scan without LLM analysis, use /scan /path/to/code.
Optional: standalone audit
/audit /path/to/code --budget 50 --max-cost 5
For a dedicated systematic review, examine up to 50 functions, with tool evidence and coverage recorded alongside findings. See the audit output-file reference for the files written by a run.
Dependencies without an LLM or Claude Code
python3 raptor.py sca --repo /path/to/project --no-llm
The SCA scan writes findings, a report, an SBOM, and SARIF.
Binary investigation
/binary investigate /path/to/binary
The default investigation maps the artefact and ranks leads without executing or fuzzing it. See binary analysis for outputs and the explicit steps that add runtime evidence.
What a finding tells you
Corpus illustration: a condensed walkthrough of a labelled WebGoat regression case:
Candidate: SQL injection in SqlInjectionLesson13.java
Evidence: The request value is bound with PreparedStatement.setString
before the prepared query is executed.
Verdict: False positive for SQL injection on this path (corpus label).
Limit: This does not establish that other paths or the application are safe.
Compare the candidate and code evidence with the label and rationale.
How RAPTOR checks itself
RAPTOR dogfoods a fair bit of its own security tooling. Some controls block PRs, some run on a schedule, and others measure whether results are drifting:
- PR and merge checks: Ruff, subsystem tests, prompt-envelope audits,
- Code scanning: CodeQL analyses Python, C/C++, and GitHub Actions on PRs,
- Scheduled assurance: full-tree lint and test sweeps, corpus-pin checks,
- Quality measurement: dataflow benchmarks and SCA calibration/stress
CI controls documents the exact triggers, evidence, limitations, and reproduction commands.
Documentation
| Next step | Guide | |-----------|-------| | Install or configure tools | Installation | | Choose a workflow or look up a command | Guides and command catalogue | | Diagnose a failed or stalled run | Troubleshooting | | Understand isolation and trust boundaries | Security and sandbox | | Contribute to RAPTOR | Contributing and developer guide |
Contributing
RAPTOR is open source; contributions are welcome. See contributor guidance for opportunities and development conventions.
Submit pull requests. Chat with us on the #raptor channel in the Prompt||GTFO Slack: https://join.slack.com/t/promptgtfo/shared_invite/zt-3v2b4sll3-SfyzFRw2lykx_XQX7F3uNQ
Licence
MIT -- Copyright (c) 2025-2026 Gadi Evron, Daniel Cuthbert, Thomas Dullien (Halvar Flake), Michael Bargury, John Cartwright.
See LICENSE for the full text. Third-party components retain their own terms; see third-party notices, dependencies, and the CodeQL licence terms.
Issues: https://github.com/gadievron/raptor/issues