What Lictor is
A free, read-only, pre-release security audit you run from one slash command. It reads your code and observes what's already public. It never attacks a live system. Open-source, Apache 2.0, runs entirely on your machine.
Documentation · the knowledge base
Start here
A free, read-only, pre-release security audit you run from one slash command. It reads your code and observes what's already public. It never attacks a live system. Open-source, Apache 2.0, runs entirely on your machine.
One command drops the skill into your Claude Code setup. No token, no signup, no telemetry.
Point it at any project (AI-built or hand-written, web or mobile). It detects the stack, runs every applicable check, and hands back a plain-English report.
Reference · the 48 checks
Group 1 · Secrets & exposure · 6 checks
Hardcoded API keys, passwords, DB connection strings in source or build output.
OpenAI / Anthropic / Gemini keys shipped to the browser or committed to the repo.
.env, .git, configs your live site accidentally serves.
World-readable S3 / GCS / Azure / Firebase / Supabase buckets.
Tokens and personal data leaking through logs and error responses.
MD5/SHA1 for passwords, ECB mode, hardcoded IVs, Math.random() tokens.
Group 2 · Access control · 7 checks
/api/* returning user data with no login check.
Weak or missing auth on mutations, broken JWT, default credentials.
Change the number in the URL, read records that aren't yours.
Extra JSON fields that set role/isAdmin you never meant to expose.
Admin pages that send the data first, then redirect you away.
Supabase / Firebase with no security rules: the front-door key opens everything.
No record of logins, permission changes, payments, so you can't detect or investigate a breach.
Group 3 · Injection & input · 5 checks
SQL / XSS / command / template injection from unsanitized input.
Your server (or AI agent) fetching attacker-controlled URLs / cloud metadata.
Unrestricted uploads, traversal in filenames, paths to remote code execution.
../ in a file path that lets anyone read arbitrary files.
pickle / unserialize / readObject on untrusted input.
Group 4 · Web hardening · 6 checks
Settings that let any website read your logged-in users' API responses.
CSP / HSTS / nosniff, and cookies without Secure/HttpOnly/SameSite.
Unsigned Stripe/GitHub webhooks and missing CSRF protection.
Brute-force, and AI-endpoint cost-bombing that drains your wallet.
User-controlled redirects used for phishing and token theft.
Debug mode, stack traces, open dashboards, GraphQL introspection in production.
Group 5 · API-specific · 4 checks
Undocumented, deprecated, debug or /v1 endpoints still live.
Uncapped page size, request body, batch size, GraphQL depth.
No bot gate on signup / checkout / referral: free-tier farming, scalping, fraud.
Trusting an external API's response blindly, with no validation or timeout.
Group 6 · Supply chain & integrity · 2 checks
Outdated, vulnerable, typosquatted or confusable packages; dependency confusion.
Unpinned GitHub Actions, curl | bash installs, unsigned auto-update.
Group 7 · AI / LLM · 10 checks · our niche
Users overriding your rules to make the model do things you didn't allow.
RAG docs, fetched pages, emails, DB rows carrying hidden instructions into the prompt.
Keys or load-bearing authz rules baked into the prompt as if it were private.
Model output flowing into HTML / eval / SQL: injection in reverse.
Feeding the model more data than the end user is allowed to see.
An AI agent wired to shell, raw SQL or money-moving APIs with no guardrail.
A RAG query with no per-tenant filter: one customer retrieves another's docs.
A knowledge base anyone can poison with documents the model later trusts.
torch.load / trust_remote_code on third-party weights.
Slopsquatting, and using a raw LLM answer as the sole decider for auth or pricing.
Group 8 · Mobile · 8 checks
Hardcoded keys in the bundle, cleartext traffic, insecure storage, exported components.
Biometric or role checks decided on the device, where anyone can flip them.
Unencrypted SQLite/Realm, world-readable files, secrets in device logs.
Trust-all overrides that let anyone MITM the app on a hostile network.
No obfuscation, no root/jailbreak detection, no tamper checks.
Deep links, custom URL schemes, WebView bridges and exported IPC.
Over-broad permissions, undisclosed tracking, clipboard and screenshot leaks.
Unpinned SDK versions, abandoned ad/analytics libraries.
Methodology & quality
Each finding is confirmed against a "what NOT to flag" guard before it reaches you, then rewritten as a plain-English story with a 5-minute fix and the OWASP/CWE mapping.
A scanner that cries wolf is worse than none. We document every false-positive class we filter, learned the hard way, from real disclosures and triager responses.
Lictor is read-only and local. It flags only what's confirmable by reading your code or observing what's already public. Anything that needs attacking a live system is out by design. That belongs to an authorized pentest.
The suite
The detection engine: the 48 checks, the stack detection, the false-positive filters.
Runtime guardrails for AI apps: prompt-injection and output-sink defenses for what you ship.
The shared core both Sentinel and Patrol build on: the rules, mappings and reporting.
The external observe-only scanner: what's already public on the open internet.
The slash command that ties it together and writes your SECURITY-AUDIT.md.
Standards & compliance
Access control, crypto, injection, misconfiguration, vulnerable components, logging.
BOLA, broken auth, property-level authz, resource consumption, business-flow abuse.
Credential use, supply chain, auth, input/output, comms, privacy, binary, storage.
Prompt injection, output handling, data leakage, supply chain, excessive agency, RAG.
The most dangerous software weaknesses. Every check cites its CWE.
Findings also map to compliance controls, surfaced only if you ask.