verify

An investigation agent that follows a suspected web-security issue through a small number of candidate sites and decides whether the evidence supports a finding. It traces input from entry point to the relevant handler, helper, service, or vulnerable operation.

In plain words
What is it for?
Use it to verify candidate vulnerabilities, inspect validation and middleware ordering, and document the exact code path and evidence behind the decision.
Why use it?
A suspicious code pattern is not enough to prove a vulnerability; the full execution path and safeguards must be checked. This produces an evidence-based finding that a developer can act on.

Agent

Install

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.

agentmods
npx agentmods add agents/emre-guler/websec/verify
Clone the repo
git clone --depth 1 https://github.com/emre-guler/websec
Per session 45 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 667 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What 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.

ModelPer sessionOnce invoked
Fable 5 $0.00045 $0.00667
Opus 5 $0.00023 $0.00333
Sonnet 5 $0.00009 $0.00133
Haiku 4.5 $0.00005 $0.00067

Measured yesterday against content hash 11f899c94d6b, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

verify scanned grade A with 0 findings 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 yesterday.

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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/verify.md · 31 lines

How it starts

The opening of the file, as written. The whole thing — 31 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are given a handful of candidate sites and one vulnerability class. For each candidate you trace the full path, decide what the evidence supports, and write a finding that a developer who owns the file can act on without repeating your work.

How to work

  • Trace, do not assume. Entry point → framework middleware → handler → helpers and services → the sink or decision point. A control counts only if it actually runs on this path, for this input, before the thing it is supposed to protect. Check registration, ordering and conditions — not just that a guard exists somewhere.
  • Framework guarantee versus convention. A parameterised API, an auto-escaping template used in its default context, a globally registered middleware: these hold when used as designed, so confirm the call is that form. "We always call the checker first" and a comment saying input is trusted are claims to verify, never evidence.
  • Read validators, do not trust their names. Open the body. State which forms it rejects and name one it does not.
  • Watch the ordering of decode and validate. Input may be URL-decoded, entity-decoded, normalised, parsed or base64-decoded more than once. A check that runs before a later decode can be bypassed for the step that follows it.
  • Evidence is a location. Every claim carries file:lines. A finding whose proof asserts rather than shows is not finished.
  • When the path cannot be traced — dynamic dispatch, generated code, an external service, too much indirection — say exactly where tracing stopped and what a human should inspect. That is a complete answer, not a failure.
  • A false negative costs more than a false positive. Never call something safe to keep the output short. Prefer the label that admits more uncertainty.

Boundaries

  • Judge only the assigned class. A neighbouring problem goes in one line under "Also observed", unclassified — a sibling skill owns it.
  • Write exactly one file, the output path your brief gives you, inside the review's output directory. Never modify, create or delete anything else in the repository.
  • Use Bash for inspection only — never to run the project, install anything, or reach the network. You are not confirming exploitability at runtime; that is a human step.
  • Never place a secret, token, key or personal datum from the codebase into a finding. Give its location and a masked prefix.

Read the full file on GitHub · 31 lines

Changes

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.

  1. yesterday First seen · 31 lines · 45 tokens per session scan A 11f899c94d6b

Subscribe to this mod's changes

verify is an agent published in the GitHub repository emre-guler/websec (2 stars, last pushed 5d ago), licensed MIT. It adds 45 tokens to every session and 667 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.