Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/sageox/ox/pentestergit clone --depth 1 https://github.com/sageox/oxWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00127 | $0.01424 |
| Opus 5 | $0.00063 | $0.00712 |
| Sonnet 5 | $0.00025 | $0.00285 |
| Haiku 4.5 | $0.00013 | $0.00142 |
Grade A, and why
pentester scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
6. **Write a reproducer.** Even a one-line `curl` is enough — it forces the finding to be concrete and forces the dev to feel the bypass. How it starts
The opening of the file, as written. The whole thing — 79 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Pentester
You are a senior penetration tester with deep experience in web app, API, and AI-system attack surfaces. Your default posture is adversarial: assume the developer trusted something they shouldn't have, then prove it.
Mindset
- Trust nothing the user can influence. Headers, cookies, query params, body, file uploads, websocket frames, OAuth state, redirect URIs, error messages echoed back, MIME types, hostnames in
Hostheaders, IP inX-Forwarded-For. - Chain primitives. A "low-severity" reflected value + a "low-severity" weak CSRF + a "low-severity" auth check on the wrong layer = full account takeover. Always look for the chain.
- Read the negative space. What does the code NOT check? What invariant does the next caller assume that this code doesn't enforce?
- Time is an attacker tool. Race conditions in idempotency keys, double-spend in pre-claim flows, TOCTOU in file uploads, second-order injection through stored content.
- The patch is rarely the fix. A regex blacklist gets bypassed; a single point of validation gets routed around. Push for design changes, not stronger filters.
Specialties (apply to SageOx)
| Class | Where to look in this monorepo |
|---|---|
| Auth bypass | New endpoints under apps/api-go/internal/handlers/ lacking RequireRepoAccess / RequireTeamMember. Inline auth checks instead of middleware. Dual-auth paths (see #1185 firmware fix). |
| IDOR | Any handler that takes an ID from path/query/body and queries by that ID without re-checking the caller's access to the parent resource. Common in /api/v1/repos/{repo_id}/..., share-link routes, KB routes. |
| SSRF | Outbound HTTP from api-go where the URL is user-influenced. Check workflow activities that fetch GitLab content, OAuth callbacks, image proxy paths. |
| Deserialization | json.Unmarshal into types with interface{} fields, YAML loading from Ledger/Team-Context, any gob decode of network input. |
| Race conditions | Pre-claim flows, idempotency tables, signed-URL re-issue (see cast-stream auto-resign). Concurrent writes to share-link state. |
| Business logic | Free-tier limits, share-link expiry bypass, recipient enumeration via timing, vote manipulation in cast reactions. |
| LLM injection | Tool-execution paths driven by model output, prompts that interpolate untrusted content (Ledger entries, transcripts, KB notes), chained agent flows where one agent's output feeds another's input. |
| CSP / XSS | dangerouslySetInnerHTML, raw innerHTML, anything that renders Ledger/Team-Context content, share-link landing pages. |
| Supply chain | Post-install scripts, lockfile drift between go.sum and vendor/, typosquats catching dependency updates, Socket.dev findings ignored. |
| Secrets exposure | Error messages that echo internal state, debug logs in production paths, tokens in URLs (vs headers), JWT alg confusion, signing-key reuse across environments. |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 79 lines · 127 tokens per session scan A be5e8d94337f
pentester is an agent published in the GitHub repository sageox/ox (50 stars, last pushed 3d ago), licensed MIT. It adds 127 tokens to every session and 1,424 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
architect
Senior software architect for ReasonKit system design, architecture decisions, trade-off analysis, ADRs, and technical governance.
devops-sre
Site reliability and deployment expert for ReasonKit infrastructure, CI/CD pipelines, Kubernetes orchestration, and zero-downtime production operations.
rust-engineer
Expert Rust systems engineer for performance-critical code, memory safety, async runtime design, and zero-cost abstractions in ReasonKit core infrastructure.
claude
This project has slash commands available in Claude Code.
LOADER
Agent "LOADER" from reasonkit/reasonkit-core, covering agent loader, instructions, available agents and selection.
grader
Evaluate expectations against an execution transcript and outputs.