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 skills/emre-guler/websec/host-headernpx skills add emre-guler/websec --skill host-headergit clone --depth 1 https://github.com/emre-guler/websecWhat 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.00075 | $0.05639 |
| Opus 5 | $0.00037 | $0.02819 |
| Sonnet 5 | $0.00015 | $0.01128 |
| Haiku 4.5 | $0.00007 | $0.00564 |
Grade A, and why
host-header 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 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.
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.
How it starts
The opening of the file, as written. The whole thing — 170 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Host Header Attack Detection
Overview
The host named in a request tells a server which site the client wants, and it is entirely under the client's control. Applications that treat it as if it were server-owned — building absolute links from it, comparing it against an internal name to grant access, passing it into a query or a command, or routing on it at a proxy — hand an attacker a lever on the whole request lifecycle, from the first hop that parses the request line to the last line of a generated email. The attacker is normally an unauthenticated remote party who changes one header, or supplies an override header the stack honours by default, and gains an attacker-controlled reset link that yields the victim's token, a response that carries their domain into other users' pages, access to functionality gated on an internal hostname, or a request made from a privileged network position to an internal address. This skill finds such trust by locating every place the host or an override header is read together with every configuration that resolves, validates, or routes on it, checking each candidate in parallel, and merging the results into <output_dir>/host-header-results.md.
What it is NOT
- Server-side request forgery (
/websec:ssrf): the classic form is a URL parameter the application itself fetches. Here the request is made by an intermediary because of how it routes on the host, and the application may never see it. Test: does the outbound destination come from a value the application passes to an HTTP client, or from a proxy's routing decision? The former belongs to the sibling skill. - Web cache poisoning (
/websec:web-cache-poisoning): a host value reflected into a response that a shared cache then serves to others is that class — the host is only the input. Test: is the harm caused by storage and redistribution? If yes, classify it there; if the harm is the link in an email or the access decision, classify it here. - Cross-site scripting (
/websec:xss): host reflected into markup without encoding is a reflection bug; it becomes a host-header finding when the host is also the vehicle for a link, a decision, or a route. - Access control (
/websec:access-control): a missing ownership or role check is that class. Here the check exists but consults an attacker-controlled hostname. - Open redirection (
/websec:open-redirect): a redirect whose destination comes from a URL-shaped request parameter belongs there, even when the same handler also reads the host. Test: is the attacker-supplied value the destination the handler redirects to, or the authority the framework substitutes into an absolute URL it builds? Only the second is this class. - Injection into a backend query or command (
/websec:sql-injection,/websec:nosql-injection,/websec:os-command-injection): if the host value is concatenated into a query or a command, the sink skill owns the finding; note the header as the source and record it here only under "Also observed". - Request smuggling (
/websec:request-smuggling): smuggling desynchronises where one request ends and the next begins. The neighbouring shape here is a proxy assuming that every request on a reused connection targets the first request's host — related, but the mechanism is host validation, not length disagreement. - Not a finding: a host reflected into an error page or a log line that reaches no link, decision, or route; a server that returns a default site for an unknown host without changing behaviour; absolute URLs built from a configured canonical origin even though the host is also read somewhere inert; an override header that a proxy in the repository demonstrably overwrites before the application sees it.
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 · 170 lines · 75 tokens per session scan A 2463dd98088d
host-header is a skill published in the GitHub repository emre-guler/websec (2 stars, last pushed 5d ago), licensed MIT. It adds 75 tokens to every session and 5,639 once invoked, about $0.0004 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.
Other skills, from other repositories
vantage
Autonomous, artifact-driven SAST (Static Application Security Testing) for web AND mobile app repositories, plus optional code-level remediation. Use whenever the user asks to security-review, pentest, audit, or scan a codebase for vulnerabilities — web (SQLi, XSS, IDOR/BOLA, auth bypass, SSRF, XXE, hardcoded secrets…
prowler-ui
Prowler UI-specific patterns. For generic patterns, see: typescript, react-19, nextjs-16, tailwind-4. Trigger: When working inside ui/ on Prowler-specific conventions (shadcn, folder placement, actions/adapters, shared types/hooks/lib).
prowler-test-api
Testing patterns for Prowler API: JSON:API, Celery tasks, RLS isolation, RBAC. Trigger: When writing tests for api/ (JSON:API requests/assertions, cross-tenant isolation, RBAC, Celery tasks, viewsets/serializers).
prowler-pr
Creates Pull Requests for Prowler following the project template and conventions. Trigger: When working on pull request requirements or creation (PR template sections, PR title Conventional Commits check, changelog gate/no-changelog label), or when inspecting PR-related GitHub workflows like conventional-commit.yml…
tailwind-4
Tailwind CSS 4 patterns and best practices. Trigger: When styling with Tailwind (className, variants, cn()), especially when dynamic styling or CSS variables are involved (no var() in className).
prowler-docs
Prowler documentation style guide and writing standards. Trigger: When writing documentation for Prowler features, tutorials, or guides.