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.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):
| Origin type | Examples |
|---|---|
| Loopback | localhost, 127.0.0.1, ::1 |
| RFC 1918 private ranges | 192.168.x.x, 10.x.x.x, 172.16–31.x.x |
| Link-local | 169.254.x.x, fe80:: |
| Internal TLDs | *.localhost, *.local, *.internal |
| Dynamic / unresolvable URL | ${API_URL} — no parseable host, skipped |
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
Each finding isHigh (−10). No hard cap (caps are reserved for raw-secret findings).
Related rules
- AE-MCP-001 — MCP servers must be pinned to exact versions
- AE-MCP-003 — remote MCP servers must declare auth