Why this rule
A coding agent should not be pointed at arbitrary remote infrastructure without a team review. Unknown public MCP origins are a supply-chain and data-exfiltration risk — tool calls travel to infrastructure outside the team’s visibility, and there is no way to audit what the server receives or returns. See the MCP safety model for the trust boundary Charter enforces.What triggers it
Charter scans MCP configuration files for server entries that use a remoteurl, Gemini CLI’s httpUrl (streamable HTTP), or a transport type of http or sse. For each remote server, Charter extracts the URL host and compares it against two sources:
- The built-in catalog of vendor-operated hosts (known, reviewed third-party MCP providers)
- The repo’s
charter.yamlmcp.trustedRemoteslist
.mcp.json, mcp.json, .cursor/mcp.json, .vscode/mcp.json, .gemini/settings.json
Always exempt (never fire):
If no
mcp.trustedRemotes allowlist exists in charter.yaml, every non-local remote server is flagged as unverifiable. The finding’s summary makes the remediation clear: add an allowlist entry for any intentional remote server.Examples
- Failing
- Passing
.mcp.json
How to fix
If the remote origin is intentional, add its hostname tocharter.yaml under mcp.trustedRemotes and commit the change. This signals that your team has reviewed the server.
charter.yaml
Score impact
High (−10 per finding). No hard cap — caps are reserved for raw-secret and Blocker findings. See Scoring and caps.
Edge cases
Local and internal origins are always exempt without any listing — loopback (localhost, 127.0.0.1, ::1), RFC 1918 private ranges, link-local addresses, and internal TLDs (*.localhost, *.local, *.internal). A dynamic ${VAR} URL has no parseable host and is skipped. Allowlist matching is host-only — no scheme or path component is compared.
Related rules
AE-MCP-001
MCP servers must be pinned to exact versions.
AE-MCP-003
Remote MCP servers must declare auth.