User-level allow/deny lists for project MCP servers.
Sourced only from the user's own configuration — the home config.toml, the
global ~/.deepagents/.env, and shell-exported env — never from a repo, so a
committed .mcp.json cannot self-approve. Persisted approvals for fixed
remote URLs bind to one validated local Git repository. Local commands and
interpolated remote URLs bind to the exact resolved worktree. All include the
server definition's fingerprint. Env-sourced approvals remain explicit
process-wide name approvals.
The "reject wins" invariant — a name in both approval and rejection data is
only rejected — is enforced in __post_init__, so every instance is disjoint
no matter how it was constructed; callers need not pre-subtract.