/box/. All
operations involve network I/O to the
Box v2 HTTP API:
/2.0/folders/{id}/items for directories, /2.0/files/{id}/content for
content, and multipart upload / /2.0/folders / delete / PUT (rename or
move) / copy for writes. Files are served as raw bytes. Both READ and
WRITE modes are supported.
Box addresses everything by numeric item id, not by path (the account
root is folder id 0). Mirage resolves each path to its id by listing folders
level by level and caches the path → id mapping, so nested directories cost
one API call per level on first access.
Every Box item is served as its raw bytes, keeping its real name. Box’s native
.boxnote / .boxcanvas come back as their stored ProseMirror-style JSON
(text, so cat foo.boxnote | jq . works), and Box’s Google-Workspace files
(.gdoc / .gsheet / .gslides) come back as the Office Open XML zips
(docx / xlsx / pptx) Box stores them as, opaque binary like any other
Office document.
Box exposes no API to edit these formats from a structured payload, so Mirage
does not decode them, it hands back exactly what Box stores. For a rich,
editable view of Google-format documents, mount them through
Google Drive with Google credentials instead; the
gws commands operate on Google file ids and do not apply to Box.Config
- Developer token (
access_token): quickest to try; expires after ~60 minutes and cannot be refreshed programmatically. - OAuth2 refresh (
client_id+refresh_token, optionalclient_secret): Box rotates the refresh token on each refresh; supplyon_refresh_token_rotatedto persist the new one across restarts. - Client credentials (
client_id+client_secret+enterprise_id): the app authenticates as its own service account; expired tokens are simply re-fetched.
Config Reference
* Provide one of:
access_token; client_id + refresh_token; or
client_id + client_secret + enterprise_id.
Mount a subfolder
Passroot_folder_id to expose a single Box folder as the mount root instead
of the whole account. Every command and FUSE/VFS op is scoped to that folder;
paths outside it are unreachable. Folder ids are stable across renames and
moves, and are visible in the Box web URL (app.box.com/folder/<id>), so an
id-based mount survives reorganization that a path prefix would not.
Cache
The Box resource caches directory listings viaIndexCacheStore (24-hour
TTL) to hold the path → id mapping and reduce repeated API calls during
traversal; file reads go through the standard read cache
(caches_reads = True). Writes invalidate the affected listings so subsequent
reads see the new state.