security-owasp

security-owasp is a skill for Claude Code, Codex from navikt/copilot. It costs 49 tokens per session (2,615 once invoked), scanned A, original, MIT.

A code-level security guide based on the 2025 OWASP Top 10 for Kotlin, Go, Java, and Node.js applications on Nais. OWASP Top 10 is a widely used list of common and serious web-application security risks.

In plain words
What is it for?
Reviewing application code for issues such as accessing another user’s data, server-side request forgery, unsafe input handling, dependency risks, and exposed error details.
Why use it?
It gives developers concrete patterns for avoiding access-control mistakes, unsafe outbound requests, injection, supply-chain issues, and poor error handling. The examples show both insecure and safer implementations.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: positional $N argument; $skill-name invocation.

Good fit Reviewing application code for issues such as accessing another user’s data, server-side request forgery, unsafe input handling, dependency risks, and exposed error details.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/navikt/copilot/security-owasp
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.

Any agent
npx skills add navikt/copilot --skill security-owasp
Clone the repo
git clone --depth 1 https://github.com/navikt/copilot

Made for: Claude Code, Codex.

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 security-owasp

README.md
[![agentmods](https://agentmods.dev/badge/skills/navikt/copilot/security-owasp.svg)](https://agentmods.dev/skills/navikt/copilot/security-owasp)
Your own site
<a href="https://agentmods.dev/skills/navikt/copilot/security-owasp"><img src="https://agentmods.dev/badge/skills/navikt/copilot/security-owasp.svg" alt="Measured on agentmods" height="20"></a>
Per session 49 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,615 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
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.1 $0.00049 $0.02615
Opus 5 $0.00024 $0.01307
Sonnet 5 $0.00010 $0.00523
Haiku 4.5 $0.00005 $0.00262

Measured 4d ago against content hash 8b90915b448f, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

security-owasp 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 4d 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/security-owasp/SKILL.md · 284 lines

How it starts

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

OWASP Top 10:2025 — Code-Level Security

Tactical security patterns for Kotlin, Go, Java, and Node.js on NAIS, aligned with the 2025 OWASP Top 10.

Complements @security-champion-agent (architecture-level threat modeling) and the security-review skill (scanning tools).

Full code examples for each category: see examples.md in this skill directory.

A01: Broken Access Control (incl. SSRF)

// ❌ IDOR — trusts user-supplied ID without ownership check
get("/api/vedtak/{id}") {
    val vedtak = vedtakRepository.findById(call.parameters["id"]!!.toLong())
    call.respond(vedtak)
}

// ✅ Verify ownership before returning resource
get("/api/vedtak/{id}") {
    val bruker = call.hentBruker()
    val vedtak = vedtakRepository.findById(call.parameters["id"]!!.toLong())
        ?: return@get call.respond(HttpStatusCode.NotFound)
    if (vedtak.brukerId != bruker.id) return@get call.respond(HttpStatusCode.Forbidden)
    call.respond(vedtak.toDTO())
}
// ✅ SSRF prevention — validate outbound URL against allowlist
func fetchExternal(targetURL string) error {
    parsed, err := url.Parse(targetURL)
    if err != nil { return err }
    if !isAllowedHost(parsed.Host) { return fmt.Errorf("host not allowed: %s", parsed.Host) }
    // proceed with request
}
  • Deny by default — require explicit grants, not explicit denials
  • Resource-level checks — not just "is authenticated" but "owns this resource"
  • M2M tokens — validate azp claim against AZURE_APP_PRE_AUTHORIZED_APPS
  • SSRF — validate outbound URLs; use Nais accessPolicy.outbound as defense-in-depth

A02: Security Misconfiguration

// ❌ Open CORS
install(CORS) { anyHost() }

// ✅ Restrict to known origins
install(CORS) { allowHost("my-app.intern.nav.no", schemes = listOf("https")) }
// ❌ Debug endpoint exposed on public ingress
mux.HandleFunc("/debug/pprof/", pprof.Index)

// ✅ Debug endpoints on separate internal-only port (Nais handles this)
internalMux := http.NewServeMux()
internalMux.HandleFunc("/debug/pprof/", pprof.Index)
go http.ListenAndServe(":9090", internalMux) // not exposed via ingress

Read the full file on GitHub · 284 lines

Files

What ships with it

2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

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. 4d ago Changed 8b90915b448f
  2. 8d ago First seen · 284 lines · 49 tokens per session scan A 1d72bcd9d530

Subscribe to this mod's changes

security-owasp is a skill published in the GitHub repository navikt/copilot (54 stars, last pushed today), licensed MIT. It adds 49 tokens to every session and 2,615 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-30.

Related

Other skills, from other repositories

skill-guide

Design, write, and review SKILL.md files using proven patterns. Use when creating, improving, or reviewing agent skills, choosing a design pattern (Tool Wrapper, Generator, Reviewer, Inversion, Pipeline), structuring progressive disclosure, writing skill descriptions, or composing patterns. Also trigger for 'skill…

AndyElessar/skills · 102 tokens

microsoft-webui

Microsoft WebUI Framework expertise — a language-agnostic server-side rendering framework where templates compile to a binary protocol and interactive Web Components hydrate as islands. Use when authoring, reviewing, or debugging WebUI components (.html + .css + .ts triplets), wiring up routes, hydrating with…

AndyElessar/skills · 212 tokens

plugin-creator

Guide AI agents through creating GitHub Copilot CLI and Claude Code plugins and plugin marketplaces — from scaffolding plugin directories and writing plugin.json manifests to building marketplace.json registries and testing installations. Use this skill whenever the user wants to create, scaffold, configure, package…

AndyElessar/skills · 181 tokens

prose-guide

Guide AI-native development using the PROSE methodology — Progressive Disclosure, Reduced Scope, Orchestrated Composition, Safety Boundaries, Explicit Hierarchy. Use when: setting up AI-native projects, creating agent primitives (.instructions.md, .prompt.md, .agent.md, SKILL.md, .spec.md, AGENTS.md), designing…

AndyElessar/skills · 162 tokens

csharp-source-generator

Use when writing, reviewing, debugging, or testing C# source generators and Roslyn incremental generators. Covers IIncrementalGenerator architecture, SyntaxProvider pipelines, generated-code snapshots with Verify, analyzer packaging, marker attributes, AnalyzerConfigOptionsProvider, SDK compatibility, diagnostics, and…

AndyElessar/skills · 152 tokens

aspire-dev

Orchestrates Aspire distributed applications using the Aspire CLI and MCP tools. USE FOR: aspire start/stop, aspire describe, aspire doctor, view logs/traces, add integrations, debug resources, AppHost management. Also trigger for DistributedApplication.CreateBuilder, AddProject, AddContainer, or Aspire resource…

AndyElessar/skills · 146 tokens