Box CLI
Use the installed Box CLI to complete and verify Box operations.
Operating workflow
-
Identify the requested outcome, target, and actor. If the request leaves a risky target, recipient, role, impersonated user, or batch scope ambiguous, ask one focused question before running a command.
-
Confirm the intended CLI environment and acting user before the operation. If the user names an environment, inspect
box configure:environments:select --helpand select that environment before checking identity:box users:get me --json --fields id,name,loginInclude the intended
--as-user <USER_ID>in the identity check when impersonation is authorized.users:get meconfirms the acting user, not the environment name. Reuse the same environment and actor controls throughout the operation and its verification; repeat the check after any authorized environment or actor change. Never switch to a more privileged identity merely to bypass an error. -
Resolve human-readable names to stable Box IDs before mutation. If multiple items match, present the candidates and ask the user to choose.
-
Prefer a dedicated CLI command. Add
--jsonfor machine-readable output and narrow--fieldsto the data needed for the task. -
Verify mutations with a read using the same actor. For deletes, check the parent collection or trash as appropriate; a
404alone can also mean the actor lacks access. For asynchronous operations, report pending status until completion is confirmed. -
Report the actor, action, relevant object IDs, verification evidence, and any unresolved failure. Include commands when they help the user reproduce the result.
Common patterns
Record box --version. Inspect command help when syntax is unfamiliar, the installed version differs from the verified version below, or a command is rejected. Resolve uncertainty before running a write.
# Identify the actor
box users:get me --json --fields id,name,login
# Inspect the root folder and a bounded set of children
box folders:get 0 --json --fields id,name
box folders:items 0 --json --fields id,type,name --max-items 20
# Search and preserve parent information for disambiguation
box search "Launch Plan" --json --fields id,type,name,parent --limit 20
# Read an item by ID
box files:get <FILE_ID> --json --fields id,name,parent,owned_by
box folders:get <FOLDER_ID> --json --fields id,name,parent,owned_by
# Create, then verify the returned folder ID
box folders:create <PARENT_FOLDER_ID> "Approved Assets" --json
box folders:get <RETURNED_FOLDER_ID> --json --fields id,name,parent
Box uses 0 as the root folder ID. A path or item name is not a stable identifier.
Use box <topic>:<command> --help to check flags and argument order in the installed version.
Setup and authentication
Only enter setup mode when the CLI is absent, authentication fails, or the user asks for it.
npm install --global @box/cli
box login -d
box login -duses the official Box CLI application for interactive content operations.- In a headless environment, have the user run
box login -d --codein their own terminal for the official CLI app, orbox login --platform-app --codefor their custom app.--codeis a boolean flag: the CLI displays an authorization URL, then prompts for the state and authorization code after the user authorizes in an external browser. Enter those values only at the local CLI prompts. - Use
box login --platform-appwhen the user needs a custom OAuth application or scopes beyond the official CLI application. - For approved server automation with JWT or Client Credentials Grant, use the current
box configure:environments:add --helpflow and protect the configuration file outside source control. - Developer tokens are for short local tests. Do not embed tokens, client secrets, private keys, or authorization codes in commands, prompts, logs, fixtures, or repository files.
After setup, verify the identity with box users:get me; do not print credential stores or raw environment configuration.
Risky and destructive work
The request must explicitly authorize the exact scope before:
- deleting or permanently deleting content;
- creating, changing, or removing collaborations or shared links;
- impersonating another user;
- changing enterprise users, groups, retention, or governance settings; or
- running a broad batch that can alter many objects.
If that authorization is absent, show the actor, target IDs, proposed role or change, and batch size, then ask for confirmation. Do not rely on CLI prompts because some destructive commands do not prompt.
Run dependent writes serially. Serialize processes sharing an OAuth environment to avoid overlapping token refreshes or environment changes. Verify using returned IDs.
Bulk operations and recovery
Use CSV or JSON input through --bulk-file-path only when the specific command supports that flag. Check the command's help and official bulk examples for supported columns and nested values. Before executing a batch:
- Validate input columns against the command's arguments and flags. Row values override command-line values, including
as-user; inspect actor and target overrides before execution. - Validate a small representative subset when the operation is reversible and the user has authorized it.
- Keep a reconciliation record separate from the CLI input, with source-row number or key, intended target ID, actor, and outcome. Do not add tracking columns the command does not support.
- Capture output and per-row error diagnostics. Bulk execution can continue after row failures and finish without a nonzero exit status; reconcile each row before reporting success.
For partial failures:
- Treat successful rows as committed until verification proves otherwise.
- Retry
429responses only after the indicated delay. - Retry timeouts or
5xxresponses only when the operation is idempotent or a read proves the mutation did not occur. - Do not retry
401,403, or ambiguous writes unchanged. Correct identity, permission, or state first. - Retry only the verified-safe failed subset, then reconcile every source row against Box.
Never restart an entire partially successful mutation batch merely because some rows failed.
REST fallback
When no dedicated command exists, prefer box request because it reuses the selected CLI identity:
box request /folders/0/items --query "limit=5" --json
Inspect box request --help before a write. Use explicit method, body, and query values, then verify the resulting Box object through a read. Raw curl with a bearer token is outside the normal workflow and should be used only when the user supplies an approved secure authentication mechanism.
Current public sources
Use these sources when installed help is insufficient:
- Box CLI repository and installation
- Box CLI authentication
- Box CLI command documentation
- Box Developer CLI guides
Examples and authentication flags checked on 2026-10-13 against the public Box CLI source and docs at commit 97e4351cb5e4a2077f37090bb5aca0ae2fe7020f (package version 4.10.1).
