Checks whether a security fix really closed the reported vulnerability in your current code. It traces the original attack through the code as it is now, runs tests only when that changes nothing, and gives each finding a verdict, fixed, still vulnerable or inconclusive, with the evidence.
WHEN TO USE
USE FOR
- Confirm a fix closed the vulnerability it was meant to close.
- Check several reported findings at once, with one verdict each.
- Find out whether a refactor removed the bug or only moved it.
NOT FOR
- Writing the fix: the fix-finding skill does that.
- Fixes that are not security fixes, or new suspected vulnerabilities.
This is a saved copy of the skill's SKILL.md instructions. It may differ from the upstream file or the version you install.
Verify Fix
When to Use
Invoke this skill only for an explicit request to verify a security fix, including a direct $verify-fix invocation. A request to implement a fix or run its tests does not by itself request this skill. For other tasks, follow the user's requested workflow and response format without applying this skill's JSON result contract.
Objective
Determine whether each supplied security finding has been fixed in the current checkout. Operate in standalone verification-only mode; do not create, modify, or delete repository files, apply patches, commit changes, write artifacts, or modify issue trackers.
Assessment Method
Use ../../references/static-finding-assessment.md to identify the original attacker-controlled source, security control, sensitive sink, reachable path, trust boundary, counterevidence, and proof gaps. If the caller already supplied that reference in the prompt, use the supplied contents without reading it again.
Verification Workflow
- Establish the original vulnerability, its preconditions, affected security boundary, and legitimate behavior that must continue to work.
- Confirm the current checkout contains the affected component. Follow moved or refactored code rather than treating a missing file, removed line, or changed function name as proof of remediation.
- Trace the original exploit path through the current implementation and check the nearest relevant control, equivalent paths, and plausible bypasses.
- Run the original reproducer, focused regression checks, or legitimate-behavior checks only when they can run without modifying the repository. Preserve exact static evidence when runtime checks are unavailable.
- Return one result per supplied finding, in the requested order. Treat closed tickets, unrelated passing tests, and the absence of a new scan finding as insufficient proof.
Result Contract
Return exactly one JSON object:
{
"results": [
{
"id": "finding-or-issue-id",
"status": "fixed|still_vulnerable|inconclusive",
"evidence": "specific current source, exploit, test, or proof-gap evidence"
}
]
}- Use
fixedonly when evidence proves the original security boundary is closed and legitimate behavior remains intact. - Use
still_vulnerableonly when evidence proves the original vulnerable path remains reachable. - Use
inconclusivefor a repository mismatch, missing original context, unavailable relevant checks, an unproven legitimate control, or another material proof gap.
Never infer a stronger verdict by weakening the read-only boundary, substituting a different vulnerability, or hiding missing evidence.
Required preparation
1 FOR YOU- 01Ask for it by name
It runs only when you ask to verify a security fix, for example by typing $verify-fix. It does not start on its own while you write or test a fix.
This skill ships inside the Codex Security plugin. Listed package contents include an MCP server. Installed components and skill versions may vary by AI tool.
Install as a Codex plugin
This skill comes with the Codex Security plugin for Codex, OpenAI's coding agent. Install the plugin from the Plugins tab in the ChatGPT desktop app, or type /plugins in the Codex command line, then start a new chat. The skill uses files kept elsewhere in the plugin, so it isn't installed on its own.
Proprietary
