mount_secret is for tools that take a file path instead of an env var (TLS keys, SSH keys, service-account JSONs). It calls POST /v1/access/{itemId}/use with delivery: file, writes the secret to a temp file with restrictive permissions, and returns an opaque mountId.
The file path is never returned to the model. Tools that need to read the file are passed the path through other channels (the host runtime can resolve mountId → path).
Input
Output
File system layout
The mount lives at:abadge-<random>is a0700directory created per mount<filename>is the item ID by default, or the value passed infilename- The file itself is
0600
Auto-cleanup
The MCP server schedules cleanup 5 minutes after the mount is created. Cleanup also runs on:- Server startup (sweeps
abadge-*directories older than 10 minutes) - Explicit
release_mountcall
What the model sees
- The opaque
mountId - Permission and expiry metadata
What the model does not see
- The file path
- The file contents
- Anything that lets the model directly read the file
mountId → path and passing it to whatever tool needs the file.
Permission required
use on the item, granted to the MCP agent. Local agents only.
Errors
Audit
access.mount_file — one row per call, with surface: "mcp", the agent ID, the item ID, the field (if any), and the declared purpose.
Example
The model emits:{ mountId: "3a8f1c...", permissions: "0600", expiresIn: "5 minutes" }. The host runtime maps mountId to the actual path and passes it to a follow-up use_secret (or its own subprocess spawn) as ssh -i <path> ....
Related
release_mount— clean up earlyuse_secret— env-var injection alternative- API reference