
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
@undisk-mcp/local-proxy
Advanced tools
Local policy-enforcing proxy for AI agents — sandboxes local LLM file access with Undisk's policy engine
[!IMPORTANT] AI makes mistakes! Undisk MCP makes recovery instant. Home: https://mcp.undisk.app Issues: https://github.com/kiarashplusplus/undisk-mcp-tracker/issues
An airlock between local LLMs and your filesystem.
When you run models locally with Ollama, LM Studio, or similar tools, giving them raw filesystem access is dangerous — a hallucinating agent can overwrite or delete critical files. This proxy enforces the same policy engine (path ACLs, size limits, extension rules) as Undisk's cloud service, but runs entirely on your machine. Every write creates a version backup so any mistake can be undone.
┌──────────────┐ stdio (JSON-RPC) ┌─────────────────────┐
│ Claude / │ ───────────────────────────▶ │ undisk-local-proxy │
│ Cursor / │ │ │
│ Ollama │ ◀─────────────────────────── │ ┌───────────────┐ │
└──────────────┘ │ │ Policy Guard │ │
│ │ ─ Path ACLs │ │
│ │ ─ Size limits │ │
│ │ ─ Extensions │ │
│ └───────┬───────┘ │
│ │ │
│ ┌───────▼───────┐ │
│ │ Local Storage │ │
│ │ + Versioning │ │
│ └───────────────┘ │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Your Filesystem │
│ ./undisk-workspace │
│ .undisk-versions/ │
└─────────────────────┘
read_file, write_file, list_files,
search_files, move_file, list_versions, restore_versionAdd to your claude_desktop_config.json:
{
"mcpServers": {
"undisk-local": {
"command": "npx",
"args": ["-y", "@undisk-mcp/local-proxy", "--root", "./workspace"]
}
}
}
Add to your MCP settings:
{
"mcpServers": {
"undisk-local": {
"command": "npx",
"args": ["-y", "@undisk-mcp/local-proxy", "--root", "/path/to/workspace"]
}
}
}
If you're using an MCP bridge for Ollama, point it at the proxy:
npx @undisk-mcp/local-proxy --root ./workspace --policy policy.json
| Flag | Description | Default |
|---|---|---|
--root <path> | Workspace root directory | ./undisk-workspace |
--policy <path> | Path to policy JSON file | Built-in default |
-h, --help | Show help message | — |
The first positional argument (without --) is also accepted as the workspace
root directory.
Create a policy.json to control what the AI agent can do:
{
"pathAcls": [
{ "pattern": "/secrets/**", "permission": "none" },
{ "pattern": "/config/**", "permission": "read" },
{ "pattern": "/**", "permission": "read-write" }
],
"sizeLimits": [
{ "maxBytes": 10485760 }
],
"extensionRules": [
{ "denied": [".exe", ".sh", ".bat"] }
]
}
| Permission | Read | Write | Delete |
|---|---|---|---|
read-write | ✅ | ✅ | ✅ |
read | ✅ | ❌ | ❌ |
append | ✅ | append-only | ❌ |
none | ❌ | ❌ | ❌ |
Patterns support * (single segment) and ** (any depth) glob syntax.
When no --policy flag is provided, the proxy uses a sensible default:
/.*)/**)Every write operation creates a version backup in .undisk-versions/ inside
your workspace root. You can:
list_versions tool with a file pathrestore_version tool with a file path and version IDdelete_file saves a version before removingVersion files are stored as:
.undisk-versions/
└── path/to/file/
├── v_1234567890_abc123.content # File content
└── v_1234567890_abc123.meta.json # Version metadata
| Tool | Description |
|---|---|
read_file | Read a file from the workspace |
write_file | Write content to a file (creates version backup) |
create_file | Create a new file |
delete_file | Delete a file (version preserved) |
list_files | List files in a directory |
search_files | Search file contents by pattern |
move_file | Move or rename a file |
list_versions | List version history for a file |
restore_version | Restore a file to a previous version |
MIT
FAQs
Local policy-enforcing proxy for AI agents — sandboxes local LLM file access with Undisk's policy engine
The npm package @undisk-mcp/local-proxy receives a total of 122 weekly downloads. As such, @undisk-mcp/local-proxy popularity was classified as not popular.
We found that @undisk-mcp/local-proxy demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.