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,沙箱要给网络,或放到你已经配好工具链的环境。

不要做这些:

  • 不要抄 mcpServers JSON。Codex 用 [mcp_servers.snyk-security]
  • 不要抄 Claude 的 -t http。这里的 -t stdio 是 Snyk CLI 自己的传输参数。
  • 不要给它 url = "https://…"。官方明确没有远程 MCP。
  • 不要把 API token 写进 argshttp_headers
  • 不要给它 required = true 挂全局。
  • 不要一上来 --yolo。扫描结果会进上下文。

网页 Cloud 不读 ~/.codex/config.toml。改完新开会话。用 codex mcp get snyk-security 看 command 是 npx 还是绝对路径。

来源