Docs / Agent & automation / AI analysis

Guide Agent & automation

AI-assisted analysis (BYO-AI)

~7 min · BYO-AI · redacted evidence · Hunter Pro

The short version. Crusader has no built-in model and ships no AI credits — you point it at your own provider. Set a local OpenAI-compatible server (Ollama, llama.cpp, LM Studio) or paste your own OpenAI/Anthropic key in Settings → AI / LLM. Then LLM Diff triages same-route anomalies and Copy LLM prompt / crusader llm prompt hand you a redacted prompt for any chat. This is local-first: nothing leaves your machine until you press a review or send button, and even then Crusader sends compact, redacted evidence only — not your traffic database. BYO-AI is part of Hunter Pro (BringYourOwnAi).

01Why bring your own AI

Hunters care what leaves the box. The whole point of an LLM in a security tool is to read evidence — and evidence is the target's hostnames, your payloads, response bodies, the vuln class you're chasing. Shipping that to a vendor's hosted model, on the vendor's terms, is a non-starter for private programs and sensitive clients.

So Crusader doesn't host a model. It connects to whatever you already trust:

  • A local model — point it at an OpenAI-compatible endpoint on 127.0.0.1 (Ollama, llama.cpp, LM Studio, vLLM). Traffic never leaves the machine at all.
  • Your own OpenAI or Anthropic account — bring your own API key. Calls go straight from your desktop to the provider you chose, billed to you.
  • Any OpenAI-compatible gateway — a self-hosted proxy, a corporate gateway, an alternate inference host — via the Custom provider.

No hosted AI credits are bundled. The OpenAI/Claude options here are bring-your-own-key — you supply and pay for the model. Crusader-hosted AI credits are separate and only available on Enterprise plans; nothing on this page consumes them.

02What actually leaves your machine

Two guarantees are wired into the feature, and the in-app guardrails panel states both plainly: prompt export is explicit and sensitive headers are redacted.

  • Nothing on capture. Crusader never auto-sends. A model call happens only when you press a review/send action. Browsing, scanning, and history capture make no outbound AI request.
  • Compact evidence, not your database. An LLM Diff review sends a small JSON bundle — the changed diff lines (capped at 120), the relationship label, and diff stats — not the full request/response, and never your traffic store.
  • Redaction before send. Every line in the bundle is scrubbed for secrets: access_token, refresh_token, id_token, token, secret, session, api_key JSON values, and Authorization / Cookie / Set-Cookie / x-api-key header-style values are replaced with [redacted]. The bundle is tagged sensitive_values_redacted: true.
  • The connection test sends no evidence. Testing a provider hits its /models endpoint only — "No captured traffic, prompts, or diff evidence are sent."

This is the same promise the homepage makes: Review diff sends only redacted evidence to the LLM provider you configured. For exported prompts you get one extra control — you can opt to include sensitive headers (see Step 3) — but it's off by default and never automatic.

One honest caveat: a confirmed finding's proof pack is unredacted by design (it's a replay artifact). If you paste a proof pack into an external model or tracker, redact it first — Crusader warns you before external shares for exactly this reason.

03Step 1 — Configure your provider

Open Settings → AI / LLM. Pick a provider preset; one click fills sensible defaults for the base URL and model, both of which stay editable.

PresetDefault base URLAPI key
Localhttp://127.0.0.1:1234/v1Not required
OpenAIhttps://api.openai.com/v1Required (your key)
Claudehttps://api.anthropic.com/v1Required (your key)
CustomYour OpenAI-compatible URLOptional (bearer)

Set the fields, then test:

  • Provider — Local keeps everything on your box; OpenAI and Claude use your own key.
  • API key — for OpenAI/Claude, paste your key. It's stored as a protected global secret under ~/.crusader and sent only to the selected provider; the settings file holds a reference, never the key text. Local and Custom only need a key if your endpoint requires bearer auth.
  • Model — the model id your account or local server exposes. Edit it freely; the presets are only starting points.
  • Base URL — advanced. Endpoint paths like /models, /chat/completions, and /messages are appended for you, so set the root (e.g. .../v1).
  • Timeout — request timeout in seconds (2–120) for checks and reviews.

Click Test connection. Crusader fetches the provider's models list and reports how many models are available — proof the URL and key work, with no evidence sent. The AI / LLM rail badge then shows READY (or NEEDS KEY if a hosted provider still wants its key).

Under the hood, OpenAI-style providers use the /chat/completions API with a bearer token; Anthropic uses /messages with your key as x-api-key and anthropic-version: 2023-06-01. Pick the matching preset and Crusader handles the wire format.

04Step 2 — Review a diff with the model

Open LLM Diff from the Tools group in the sidebar. The idea: a deterministic comparer finds where two comparable captures disagree, then the model triages whether that disagreement is worth your time — with one safe next probe, negative controls, and report framing.

The workflow:

  1. Pick side A (a baseline) and side B (the candidate capture) from your history. Crusader runs its own line diff first and shows the changed-line preview before any model is involved.
  2. The pair must be comparable — same method, same host, same route shape. Cross-host or method-mismatched pairs are refused; this is what keeps the evidence tight and the verdict meaningful.
  3. Press Queue & run (or queue several and Run all). Crusader builds the redacted bundle and sends it to your provider.

Prefer to let Crusader find the interesting pairs for you? Review smart scans recent history for same-route anomalies — status changes, 4xx/5xx responses, body-size deltas, identity-sensitive or finding-tagged rows — queues the strongest candidates, and runs them. Smart queue stages them without running.

Each review returns strict JSON: a verdict (ignore, watch, probe, likely_valid, reportable, or chain_candidate), a confidence score, the security boundary in play, one safe_next_probe (defaulting to GET/HEAD and flagged requires_user_approval), negative controls, and a one-line report angle. The model is instructed not to call something a bug without evidence and to prefer "watch" or "probe" when the signal is ambiguous — it ranks work, it doesn't fire probes. Use Copy bundle to inspect exactly what was sent.

Authorized testing only. The verdict's "safe next probe" is a suggestion that needs your approval — Crusader does not auto-execute it. Run probes only against systems you're authorized to test.

05Step 3 — Export a prompt for any chat or agent

You don't have to wire up an API key at all. Crusader can build a self-contained prompt locally and drop it on your clipboard, so you can paste it into Claude Code, Codex, or any chat window — no provider config, no in-app call.

  • Copy LLM prompt appears on findings (in the Findings list and on Dashboard finding cards). It builds a review prompt for that finding.
  • Per-request prompts come from the CLI (below) — a full request/response, formatted as a question, ready to paste.
  • When you trigger an in-app AI action with no provider configured, Crusader offers the realistic paths: copy a review prompt for Claude Code or Codex, or configure a key for in-app auto-triage. (Findings are also live to Claude Code through the Crusader MCP.)

Every exported prompt opens with a line stating Crusader generated it locally and has not called a hosted provider, and sensitive headers are redacted by default. The prompt is portable — paste it wherever your model lives.

06The llm CLI verb

For scripting and agents, crusader llm prompt turns a captured exchange into a redacted, paste-ready prompt and prints it as JSON — so it pipes cleanly:

# build a redacted prompt for history row 1423
crusader llm prompt 1423

# add your own question
crusader llm prompt 1423 --question "is this IDOR or just a 403 page?"

# include sensitive headers (Authorization, Cookie, tokens) — only for your own trusted endpoint
crusader llm prompt 1423 --include-sensitive-headers

The command emits a JSON object whose prompt field is the text to feed a model. It also reports its own honesty metadata so a script can assert on it: provider_call: "none", hosted_ai_credits: "not used", and sensitive_headers: "redacted" (or "included" if you passed the flag). Crusader builds the prompt locally — it does not call any model for you. Pipe it into your own agent:

crusader llm prompt 1423 | jq -r .prompt | your-agent

By default Authorization, Cookie, Set-Cookie, tokens, secrets, API keys, and session headers are masked, and the response body is truncated. Pass --include-sensitive-headers only when you're sending the prompt to an endpoint you trust.

Like all Crusader CLI commands, this prints JSON to stdout and errors to stderr — safe to drop into scripts and agent loops. See the CLI guide for the full surface.

07Tier & limits

Bring-your-own AI is a Hunter Pro feature (BringYourOwnAi — "Connect a local or user-provided model provider"). LLM Diff and the crusader llm verb live behind it; the CLI verb additionally needs full-CLI automation.

  • You supply the model and pay for it. Local inference is free if you run it; OpenAI/Anthropic calls are billed to your own account. Crusader bundles no credits.
  • Hosted Crusader AI credits are Enterprise-only and entirely separate from anything here.
  • Local-first by default. With a local provider, no security data ever leaves your machine. With a hosted provider, only redacted evidence goes to the endpoint you chose, on explicit action.

Don't have Pro yet? The 14-day trial unlocks Hunter Pro with just an email, so you can wire up a local model and try LLM Diff end to end. See the pricing page or the in-app License screen for current tiers.

Want a guide that isn't here yet? Email hello@crusaderproxy.com.