What one command wires
Wire OpenAI Codex to Vulnetix. Skills install to ~/.agents/skills, the path Codex actually reads, and the dependency guard answers PreToolUse in the shape Codex accepts.
vulnetix agent install --agent codex
- Agent Skills: supported —
~/.agents/skills - Dependency guard: supported —
~/.codex/hooks.json - MCP server: supported —
https://mcp.vulnetix.com/mcp
Where OpenAI Codex reads skills
Agent Skills is an open standard, but hosts disagree about the directory. The installer writes the one OpenAI Codex actually opens.
- Everywhere, for you:
~/.agents/skills - This repository:
.agents/skills
Add the MCP server to ~/.codex/config.toml
[mcp_servers.vulnetix]
url = "https://mcp.vulnetix.com/mcp"
http_headers = { Authorization = "ApiKey ${VULNETIX_ORG}:${VULNETIX_KEY}" }
True of OpenAI Codex specifically
- Codex reads ~/.agents/skills, not ~/.codex/skills. Documentation that says otherwise sends every skill to a directory Codex never opens.
- Codex rejects a hook response carrying permissionDecision "allow", so the guard omits the field entirely when it is only reporting — which is also what Claude Code accepts, so one encoder serves both.
Install lodash at a version with known critical advisories
The same binary, the same two response shapes. Codex reports the block in its own words, having never been told about Vulnetix in the prompt.
$
codex exec "install lodash 4.17.20"
exec npm install lodash@4.17.20
hook: PreToolUse Blocked
lodash@4.17.20 · npm
12 vulnerabilities · 6 critical, 6 high
Quick fix: bump to 4.17.23
STOPPED — the dependency security gate blocked
installing lodash@4.17.20 because it has critical
known vulnerabilities.