diff --git a/README.md b/README.md index 23928f0..bd598c1 100644 --- a/README.md +++ b/README.md @@ -3,23 +3,26 @@
-
-# Shannon - AI Pentester by Keygraph
+

Built by Keygraph
diff --git a/apps/worker/src/temporal/activities.ts b/apps/worker/src/temporal/activities.ts index 7cc9621..837fbdc 100644 --- a/apps/worker/src/temporal/activities.ts +++ b/apps/worker/src/temporal/activities.ts @@ -452,9 +452,11 @@ export async function runAuthzExploitAgent(input: ActivityInput): Promise
-
-# Shannon - AI Pentester by Keygraph
+

Built by Keygraph
@@ -531,12 +574,12 @@ rules: | Key | Effect | | --- | --- | -| `min_severity` | Drops findings rated below this severity. Applies only when `exploit` is `"true"`. | +| `min_severity` | Drops findings rated below this severity. Applies in both exploitative and analysis-only runs. | | `min_confidence` | Drops findings rated below this confidence. Applies only when `exploit` is `"false"`. | | `guidance` | Free-text instruction to the report agent, such as which topics to exclude. | | `sarif` | Emits a SARIF 2.1.0 log alongside the Markdown report. Requires `exploit: "true"`. | -A finding carries one rating or the other, never both: an exploited finding is rated by severity, an analysis-only finding by confidence. Setting the threshold that does not apply to the run is ignored, and Shannon logs a warning naming the one to use instead. +Every finding carries a severity, but it does not mean the same thing in each mode: an exploitative run measures severity from what the exploit demonstrated, while an analysis-only run assesses it from the class of flaw and the impact it would have. An analysis-only finding carries a confidence rating alongside its severity, since nothing was proven. Setting `min_confidence` on an exploitative run is ignored, and Shannon logs a warning naming the threshold to use instead. ### SARIF Output @@ -550,7 +593,7 @@ report: Each finding becomes one SARIF result, filed under a rule per vulnerability class (`shannon/injection`, `shannon/xss`, `shannon/auth`, `shannon/authz`, `shannon/ssrf`) and tagged with its OWASP Top Ten 2025 category. Results are anchored to the code location the analysis phase recorded, falling back to the HTTP entry point when the finding names no file. Severity maps onto SARIF's three levels: `critical` and `high` become `error`, `medium` becomes `warning`, everything else becomes `note`. -The log is written only for exploitative runs. An analysis-only run rates findings by confidence and produces no severity, so there is nothing to populate `level` with; `sarif` is ignored when `exploit` is `"false"`. +The log is written only for exploitative runs. `sarif` is ignored when `exploit` is `"false"`. Supported rule types include `url_path`, `subdomain`, `domain`, `method`, `header`, `parameter`, and `code_path`. @@ -613,7 +656,7 @@ Shannon forwards only the selected provider's credential into the scan container ### Any other provider -Shannon accepts any provider and model present in the Pi harness catalogue. Browse them at [pi.dev/models](https://pi.dev/models). These are technically supported but not recommended. Claude models are best-supported (see the note below). +Shannon accepts any provider and model present in the Pi harness catalogue. Browse them at [pi.dev/models](https://pi.dev/models). ```bash export SHANNON_AI_API_KEY=your-api-key # the provider's API key @@ -625,7 +668,7 @@ This path covers providers whose credential is a single API key. Providers that `npx @keygraph/shannon setup` exposes this as the **Other provider** option. > [!IMPORTANT] -> Claude models are the best-supported option. Shannon's evaluations, internal testing, and agent harness are tuned for Claude. Other models are permitted and validated against the harness catalogue, but may not follow Shannon's instructions or tool-use constraints as reliably. Use them at your own risk. +> Models are validated against the harness catalogue, but capability varies. A model that does not follow Shannon's instructions or tool-use constraints reliably will produce weaker pentests. Evaluate the model you choose against your own targets before depending on its results. ## Cyber safeguards (do this before your first scan) @@ -732,12 +775,55 @@ The variable is rejected in preflight where it cannot take effect: with a non-`o `npx @keygraph/shannon setup` covers this under **Custom Base URL**, which asks which API your gateway serves and configures the matching provider for you. +## OpenAI Codex (ChatGPT Plus/Pro subscription) + +A ChatGPT Plus or Pro Codex subscription can run Shannon. Shannon reuses a login created by Pi. + +Before running a pentest, review the [cyber safeguards requirements](#cyber-safeguards-do-this-before-your-first-scan). + +1. Install Pi by following the instructions at [pi.dev](https://pi.dev). +2. Log in with your subscription using Pi's [subscription authentication guide](https://pi.dev/docs/latest/providers#subscriptions). This creates `~/.pi/agent/auth.json` with an `openai-codex` entry. + +3. Select a Codex model and enable Pi authentication: + + ```bash + export SHANNON_USE_PI_AUTH=1 + export SHANNON_AI_MODEL=openai-codex:gpt-5.5 + ``` + +4. In npx mode, run `npx @keygraph/shannon start ...` from the same shell. In source-build mode, add the two variables to `.env` and run `./shannon start ...`. + +Supported Codex models are `gpt-5.6-sol`, `gpt-5.5`, and `gpt-5.4`. + +## Claude Code subscription + +The latest version of Shannon does not support Claude Code subscriptions. The [`shannon-v1`](https://github.com/KeygraphHQ/shannon/tree/shannon-v1) branch is the final release built on the Claude Agent SDK and supports Claude Code OAuth. + +Before running a pentest, review the [cyber safeguards requirements](#cyber-safeguards-do-this-before-your-first-scan). + +1. Generate a Claude Code OAuth token: + + ```bash + claude setup-token + ``` + +2. Run the setup flow for the final `shannon-v1` release: + + ```bash + npx @keygraph/shannon@1.9.0 setup + ``` + +3. Select **OAuth Token** and enter the token generated by Claude Code. +4. Start the pentest with `npx @keygraph/shannon@1.9.0 start ...`. + +These instructions apply only to `shannon-v1`. + ## Validation Checks run before a scan starts, so mistakes fail immediately rather than partway through a run: - **Provider and model ID** — validated against the Pi harness catalogue. An unknown provider or model ID fails preflight with a pointer to [pi.dev/models](https://pi.dev/models). A custom base URL exempts the model ID, since a gateway may serve its own names. -- **Credential presence** — always validated for the selected provider. +- **Credential presence** — validated for the selected provider, or read from Pi when `SHANNON_USE_PI_AUTH=1`. - **Credential validity** — one minimal request against the model the scan will use, so a rejected key, an exhausted quota, or a model the account cannot reach fails before any agent runs. Bedrock included: its bearer token and region go through the same probe. ## Migrating from the three-tier configuration @@ -942,7 +1028,7 @@ For maximum isolation, run Shannon inside a disposable virtual machine. ## LLM and Automation Caveats - **Verification is required**: Shannon uses a proof-by-exploitation methodology, but final reports can still contain weakly supported or incorrect details. Human review is essential. -- **Model support**: Shannon is officially supported only with Claude models. Alternative models may be incomplete, inaccurate, or unstable. +- **Model support**: results vary by model. A model that does not follow Shannon's instructions or tool-use constraints reliably may produce incomplete, inaccurate, or unstable runs. - **Prompt injection risk**: Do not point Shannon at untrusted or adversarial codebases. AI-powered tools that read source code can be influenced by malicious repository content. ## Scope of Analysis @@ -963,7 +1049,6 @@ For broader coverage, the Keygraph platform adds black-box and white-box agentic A full test run typically takes roughly 1 to 1.5 hours. LLM API costs vary by model pricing, target complexity, selected provider, and concurrency. - --- # File: docs/coverage-roadmap.md diff --git a/llms.txt b/llms.txt index 4abddef..40fd8d2 100644 --- a/llms.txt +++ b/llms.txt @@ -6,7 +6,7 @@ Use this file as the concise entry point for AI agents and LLMs reading this rep ## Start Here -- [README](README.md): Main project overview, editions, quick start, Shannon capabilities, Keygraph platform positioning, safety notes, licensing, and support links. +- [README](README.md): Main project overview, editions, quick start, Shannon capabilities, Keygraph platform positioning, common questions, safety notes, licensing, and support links. - [Full Combined Context](llms-full.txt): README and documentation combined into one file for agents that need maximum local context. ## Shannon