oauth

oauth is a skill for Claude Code, Codex from emre-guler/websec. It costs 61 tokens per session (5,768 once invoked), scanned A, original, MIT.

A security review for OAuth, a standard that lets an application use another service for delegated access or sign-in.

In plain words
What is it for?
Reviewing sign-in callbacks, authorization requests, token handling, scopes, PKCE, state and nonce checks, and identity-provider integrations.
Why use it?
It helps find mistakes in redirects, codes, tokens, identity checks, permissions, and replay protection that could lead to account takeover.

Skill for Claude CodeCodex

Part of the websec plugin — 36 skills, 2 agents shipped together

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 skills/emre-guler/websec/oauth
Any agent
npx skills add emre-guler/websec --skill oauth
Clone the repo
git clone --depth 1 https://github.com/emre-guler/websec

Made for: Claude Code, Codex.

Or install websec, the plugin that ships this one along with the rest of its 36 skills, 2 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for oauth

README.md
[![agentmods](https://agentmods.dev/badge/skills/emre-guler/websec/oauth.svg)](https://agentmods.dev/skills/emre-guler/websec/oauth)
Your own site
<a href="https://agentmods.dev/skills/emre-guler/websec/oauth"><img src="https://agentmods.dev/badge/skills/emre-guler/websec/oauth.svg" alt="Measured on agentmods" height="20"></a>
Per session 61 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,768 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.00061 $0.05768
Opus 5 $0.00030 $0.02884
Sonnet 5 $0.00012 $0.01154
Haiku 4.5 $0.00006 $0.00577

Measured 3d ago against content hash e573be6bde74, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

oauth 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 3d 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.

skills/oauth/SKILL.md · 180 lines

How it starts

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

OAuth Detection

Overview

OAuth is a delegated-authorization framework that applications routinely repurpose as a login mechanism: the client sends the user to an authorization server, receives a code or token back through the browser, and treats what it learns from that credential as proof of identity. Everything sensitive — the authorization code, the access token, the identity claims — travels through the victim's browser across redirects, which is exactly where it can be diverted, swapped, or replayed. The attacker is usually an unauthenticated outsider who lures the victim into completing a crafted authorization request, or a registrant who abuses loose validation on the provider side; what they gain is a session as the victim on the client application, data within the token's scope, or, on the provider side, outbound reach from the provider's network. This skill finds such gaps by locating every site that builds, receives, or validates part of a delegated login flow, verifying each one in parallel, and merging the results into <output_dir>/oauth-results.md.

Code-review guidance below is split by role: the client application (the site offering the sign-in button) and the provider (the authorization server). Most codebases play one role; some play both, and the checks differ.

What it is NOT

  • Local credential flows (/websec:authentication): password login, reset, lockout, and the local session. Test: if no third party issues the credential being trusted, it is the sibling skill.
  • Token signature mechanics (/websec:jwt): whether an identity token's signature is checked, its algorithm pinned, its claims asserted. Judge that there and record the flow-level consequence here; do not re-derive the signature analysis.
  • Generic request forgery (/websec:csrf): a missing form token on an ordinary state-changing endpoint. A missing or unchecked state on an authorization callback is judged here, because the fix and the impact are flow-specific.
  • What the resulting identity may reach (/websec:access-control): once the grant is exchanged and a session or token exists, whether that principal may touch a given object or invoke a given function is authorization. Test: is the defect in how the grant is obtained or validated — callback matching, state, scope, code exchange — or in what the resulting identity is then allowed to reach? The first is here, the second is theirs.
  • Outbound request reachability (/websec:ssrf): whether a provider's fetch of a registrant-supplied URI can reach internal services. The trust decision — accepting an unauthenticated registration or dereferencing a client-supplied request reference — is judged here; note the reachability question there.
  • Open redirect as a class (/websec:open-redirect): a redirect helper that takes its destination from the request — including the post-login returnUrl — belongs there wherever it lives in the codebase. It is a gadget used to steal a code; the OAuth finding is the loose callback validation that lets the gadget be selected. Test: is the fix in the redirect helper's destination check (there) or in the redirect_uri matching at the authorization request and the code exchange (here)?
  • Not a finding: a service that plays no part in the flow because architecture.md records the delegated login as completed elsewhere — a gateway, a dedicated sign-in service, or a front end for a back end that exchanges the code and forwards the result. The absence of state, callback matching, or an exchange here is the architecture, not a flaw; read the "Enforced where" column and the trust-boundary section before reporting one. What is judged in that case: what this service accepts from that hop — claims, a subject identifier, a session it did not issue — and whether anything confirms the hop produced it. Where the hop's configuration cannot be read, the label is NEEDS MANUAL REVIEW naming it.
  • Not a finding: a callback matched byte-for-byte against a registered value; a session-bound state that is generated, stored, compared, and discarded; a consent screen (consent does not prevent theft); a published verification key (public keys are meant to be public); an identity token that is fully validated even though the flow also carries other parameters.

Read the full file on GitHub · 180 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. 3d ago First seen · 180 lines · 61 tokens per session scan A e573be6bde74

Subscribe to this mod's changes

oauth is a skill published in the GitHub repository emre-guler/websec (2 stars, last pushed 6d ago), licensed MIT. It adds 61 tokens to every session and 5,768 once invoked, about $0.0003 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.

Related

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…

tinoimammp/vantage-security-agent · 230 tokens

prowler-compliance

Creates, syncs, audits and manages Prowler compliance frameworks end-to-end. Covers the two supported JSON schemas (universal multi-provider and legacy per-provider), the SDK model tree (legacy attribute classes, universal ComplianceFramework, ConfigRequirements guardrails), output formatters (legacy per-framework +…

prowler-cloud/prowler · 227 tokens

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-cloud/prowler · 64 tokens

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…

prowler-cloud/prowler · 84 tokens

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-cloud/prowler · 62 tokens

prowler-ci

Helps with Prowler repository CI and PR gates (GitHub Actions workflows). Trigger: When investigating CI checks failing on a PR, PR title validation, changelog gate/no-changelog label, conflict marker checks, secret scanning, CODEOWNERS/labeler automation, or anything under .github/workflows.

prowler-cloud/prowler · 67 tokens