Install
openclaw skills install @ivanpantheon/navil-policyReduce MCP token costs by up to 94% and enforce least-privilege tool access. Creates YAML policies that control which MCP tools each agent can see and call. Use when user mentions token costs, context window bloat, too many tools, tool scoping, reducing tokens, saving money on API calls, least privilege, restricting tool access, creating access policies, or agent permissions. Also when user says "my context window is full" or "too many tool schemas" or "MCP is too expensive".
openclaw skills install @ivanpantheon/navil-policyGitHub's MCP server exposes 90+ tools consuming 50,000+ tokens before your agent thinks about your question. At scale, MCP tool definitions can exceed model context limits entirely.
Navil Policy solves this by controlling which tools each agent sees in tools/list responses. A code review agent sees 3 tools instead of 90. That is a 94% reduction in schema tokens — cheaper inference, faster responses, and a smaller attack surface.
Navil's policy engine sits in the proxy layer (set up by navil-shield). When an agent requests tools/list, Navil filters the response based on the policy file before the agent ever sees it.
This means:
navil --version
If navil is not installed, install it first:
pip install navil --break-system-packages 2>/dev/null || pip install navil
If MCP servers are not yet wrapped with navil shim, the policy engine cannot filter tool lists. Recommend installing navil-shield first.
To see what tools are currently being exposed to agents:
navil policy check --tool "*" --agent default --action list
Navil can auto-generate policies by watching how agents actually use tools:
navil policy auto-generate
This creates ~/.navil/policy.auto.yaml based on observed baselines. Review it, then copy rules you want to keep into ~/.navil/policy.yaml.
For manual policy creation, create ~/.navil/policy.yaml:
# Example: Scope tools by workflow
scopes:
code-review:
allow:
- get_pull_request
- list_files
- create_review_comment
description: "Code review agent sees only PR-related tools"
deploy:
allow:
- create_deployment
- get_deployment_status
description: "Deploy agent sees only deployment tools"
read-only:
allow:
- get_*
- list_*
- search_*
description: "Read-only agents cannot modify anything"
default:
allow: "*"
description: "Backward compatible — unrestricted access"
# Rate limiting per agent
rate_limits:
default:
requests_per_minute: 60
deploy:
requests_per_minute: 10
navil policy check --tool create_deployment --agent code-review --action call
# Expected: DENIED — code-review scope doesn't include deployment tools
navil policy check --tool get_pull_request --agent code-review --action call
# Expected: ALLOWED
View the live decision log to verify policies are working:
navil policy suggest
This shows pending auto-generated rules with confidence scores. Accept the ones that make sense.
navil policy rollback
This undoes auto-generated policy changes. Your manually written policy.yaml is never modified by the auto-generator.
Present this to the user when they ask about cost:
| Scenario | Tools Exposed | Approx Schema Tokens | With Navil Scoping | Savings |
|---|---|---|---|---|
| GitHub MCP (all tools) | 90+ | ~50,000 | 3 tools (~1,600) | 97% |
| Database MCP | 106 | ~54,600 | 8 tools (~4,100) | 92% |
| Full enterprise stack (5 servers) | 300+ | ~150,000+ | 20 tools (~10,000) | 93% |
At typical API pricing, scoping a heavy MCP setup saves $50-200/month in token costs alone.
Navil ships with community templates for common MCP servers. Ask the user which servers they use, then suggest the appropriate template:
policy.yaml (manual rules) always takes precedence over policy.auto.yaml (generated rules)tools/list, separate from what they can calldefault scope with allow: "*" ensures backward compatibility