Snyk Studio 先 --ade codex,MCP 是本地 stdio 不是远程
Codex 默认走 Snyk Studio 安装器,必须带 --ade codex。只要 MCP:codex mcp add snyk-security -- npx -y snyk@latest mcp -t stdio。没有托管远程。密钥用 env_vars 转发 SNYK_TOKEN,不要写进 env 表。
Snyk 给 Codex 的现行默认是 Studio 安装器(钩子 + 技能 + MCP),不是远程 HTTP。官方把 Codex CLI 列进「有钩子」的 ADE。先预览,再钉死 Codex,不要让它改所有检测到的客户端:
curl -fsSL "https://raw.githubusercontent.com/snyk/studio-recipes/main/installer/dist/snyk-studio-install.sh" -o snyk-studio-install.sh
bash ./snyk-studio-install.sh --dry-run --ade codex
bash ./snyk-studio-install.sh --ade codex
装完跑 snyk auth,或把 SNYK_TOKEN 放进启动 Codex 的那个进程。不要 bash ./snyk-studio-install.sh -y 不带 --ade。Windows 用官方 .ps1,不要把这份 bash 抄进 PowerShell。
只要 MCP、不要安装器时,官方 Codex 节是本地 stdio。Snyk 没有托管远程 MCP。用户层表名官方就是带连字符的 snyk-security(这不是插件 mcp.json,#33063 那套连字符问题不套这里):
codex mcp add snyk-security -- npx -y snyk@latest mcp -t stdio
[mcp_servers.snyk-security]
command = "npx"
args = ["-y", "snyk@latest", "mcp", "-t", "stdio"]
env_vars = ["SNYK_TOKEN"]
enabled = true
[mcp_servers.snyk-security.env]
SNYK_MCP_PROFILE = "lite"
SNYK_MCP_PROFILE 可以是 lite / full(默认)/ experimental,写进 env 表没问题,那不是密钥。SNYK_TOKEN 必须走 env_vars,不要写成 env 表里的字面量,TOML 占位符也不会展开。本机已经装了 snyk 时,command 改成可执行文件的绝对路径;用 fnm / nvm 管 Node 时尤其不要写裸 snyk。
第一次用会走浏览器登录(工具名 snyk_auth),也可以先在终端 snyk auth。随后可让它扫代码 / 依赖。snyk_sca_scan 可能在本机拉 Gradle / Maven / pip,沙箱要给网络,或放到你已经配好工具链的环境。
不要做这些:
- 不要抄
mcpServersJSON。Codex 用[mcp_servers.snyk-security]。 - 不要抄 Claude 的
-t http。这里的-t stdio是 Snyk CLI 自己的传输参数。 - 不要给它
url = "https://…"。官方明确没有远程 MCP。 - 不要把 API token 写进
args或http_headers。 - 不要给它
required = true挂全局。 - 不要一上来
--yolo。扫描结果会进上下文。
网页 Cloud 不读 ~/.codex/config.toml。改完新开会话。用 codex mcp get snyk-security 看 command 是 npx 还是绝对路径。