Add MCP and skill installer / 新增 MCP 与 Skill 安装器#3292
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 47cbfa7d74
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
fetchText used the proxy-aware netclient, which has no dial-time SSRF guard, so an install source of http://169.254.169.254/... (or a DNS rebind to an internal IP) could reach cloud metadata / internal services. Wrap the client's transport with the same dial-time guard web_fetch uses: resolve, block private/link-local/CGNAT/unspecified, dial the vetted IP; loopback stays allowed. Adds a regression test.
|
Reviewed this carefully (it's large + security-sensitive). The good news: zip-slip/path-traversal is safe ( 1. SSRF — I pushed a fix for this one. 2. Consent story — your call (design decision).
The docs just shouldn't promise an enforced confirmation that doesn't exist. Should-fix (non-blocking): validate the MCP server name charset from an untrusted |
|
Addressed in 97017fd. For the consent-story item, I chose option (b): the package docs no longer claim that apply only runs after an ApprovalFunc consent, and the install-capability skill now says any needed user confirmation must happen before apply=true while host permissions may still deny the apply call. I also fixed the should-fix by validating MCP server names from .mcp.json/direct entries against the existing Reasonix identifier rules, with regression coverage for invalid names. Verified:
|
Summary
install_sourcemeta tool and built-in install-capability skill for two-phase MCP/skill installs and uninstalls.mcp.json, executable, and package-name sources with plan IDs, risk levels, rollback, and replace handlingCache impact
Testing
go test ./... -count=1(cd desktop && go test ./... -count=1)(cd desktop/frontend && npm run build)