Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Configure which host directories agent containers can access. View, add, or remove mount allowlist entries. Triggers on "mounts", "mount allowlist", "agent access to directories", "container mounts".
.claude/skills/nanocoai-manage-mounts/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -10% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -42% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -42% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -49% | 0% |
Configure which host directories NanoClaw agent containers can access. The mount allowlist lives at ~/.config/nanoclaw/mount-allowlist.json.
bashcat ~/.config/nanoclaw/mount-allowlist.json 2>/dev/null || echo "No mount allowlist configured"
Show the current config to the user in a readable format: which directories are allowed, and whether each is read-only or read-write.
Ask which directories the user wants agents to access. For each path:
allowReadWrite: true) or read-only (allowReadWrite: false, the safer default)Build the JSON config and write it:
bashpnpm exec tsx setup/index.ts --step mounts --force -- --json '{"allowedRoots":[{"path":"/path/to/dir","allowReadWrite":true}],"blockedPatterns":[]}'
Use --force to overwrite the existing config.
Read the current config, show it, ask which entry to remove, then write the updated config through the same write path (build the trimmed JSON and pass it to --step mounts --force -- --json):
bashpnpm exec tsx setup/index.ts --step mounts --force -- --json '{"allowedRoots":[],"blockedPatterns":[]}'
bashpnpm exec tsx setup/index.ts --step mounts --force -- --empty
The allowlist is read fresh when a container is spawned, so new mounts apply to newly spawned containers automatically — no service restart needed.
To apply the new config to a group that already has a running container, restart just that group:
bashncl groups restart --id <group-id>
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 51,428 | 3,376 | -93% | 1 | 1 | 0% | 2,180 | 583 | -73% | 0 | 0 | — |
case-02 | fail→fail | 5,855 | 4,971 | -15% | 1 | 1 | 0% | 1,160 | 692 | -40% | 0 | 0 | — |
case-03 | fail→fail | 6,155 | 2,099 | -66% | 1 | 1 | 0% | 899 | 652 | -27% | 0 | 0 | — |
case-04 | fail→pass | 6,334 | 2,847 | -55% | 1 | 1 | 0% | 1,014 | 944 | -7% | 0 | 0 | — |
case-05 | fail→pass | 6,584 | 6,248 | -5% | 1 | 1 | 0% | 1,114 | 1,004 | -10% | 0 | 0 | — |
case-06 | fail→pass | 7,134 | 1,836 | -74% | 1 | 1 | 0% | 1,209 | 699 | -42% | 0 | 0 | — |
case-07 | fail→pass | 70,497 | 2,318 | -97% | 1 | 1 | 0% | 1,357 | 785 | -42% | 0 | 0 | — |
case-08 | fail→pass | 11,045 | 2,714 | -75% | 1 | 1 | 0% | 1,725 | 879 | -49% | 0 | 0 | — |
case-09 | fail→pass | 7,785 | 2,961 | -62% | 1 | 1 | 0% | 1,397 | 929 | -34% | 0 | 0 | — |
case-10 | pass→pass | 35,181 | 1,427 | -96% | 1 | 1 | 0% | 1,330 | 598 | -55% | 0 | 0 | — |
case-11 | pass→pass | 4,930 | 1,755 | -64% | 1 | 1 | 0% | 789 | 716 | -9% | 0 | 0 | — |
case-12 | pass→pass | 8,228 | 2,949 | -64% | 1 | 1 | 0% | 1,168 | 829 | -29% | 0 | 0 | — |
case-13 | pass→pass | 9,386 | 4,663 | -50% | 1 | 1 | 0% | 1,617 | 1,173 | -27% | 0 | 0 | — |
case-14 | pass→pass | 7,372 | 1,662 | -77% | 1 | 1 | 0% | 1,087 | 624 | -43% | 0 | 0 | — |
case-15 | fail→pass | 18,291 | 52,763 | +188% | 1 | 1 | 0% | 1,697 | 666 | -61% | 0 | 0 | — |
case-16 | pass→pass | 5,184 | 2,357 | -55% | 1 | 1 | 0% | 801 | 668 | -17% | 0 | 0 | — |
case-17 | pass→pass | 7,575 | 3,893 | -49% | 1 | 1 | 0% | 1,081 | 893 | -17% | 0 | 0 | — |
case-18 | fail→pass | 4,935 | 1,999 | -59% | 1 | 1 | 0% | 773 | 733 | -5% | 0 | 0 | — |
case-19 | fail→pass | 7,356 | 1,773 | -76% | 1 | 1 | 0% | 1,193 | 681 | -43% | 0 | 0 | — |
case-20 | pass→pass | 11,117 | 7,535 | -32% | 1 | 1 | 0% | 1,947 | 1,736 | -11% | 0 | 0 | — |
case-21 | pass→pass | 8,555 | 9,316 | +9% | 1 | 1 | 0% | 1,487 | 2,064 | +39% | 0 | 0 | — |
case-22 | pass→pass | 11,480 | 4,226 | -63% | 1 | 1 | 0% | 1,748 | 1,060 | -39% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.