Atlas / MCP servers / box / Box CLI

Box CLISAFE

mcp/box/boxcli

A command line interface for interacting with the Box API.

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
4 3r · 1w · 0d
Transport
—
License
Apache-2.0
Stars
285
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](http://opensource.box.com/badges) [](https://coveralls.io/github/box/boxcli?branch=main)

The Box CLI is a user-friendly command line tool which allows both technical and non-technical users to leverage the Box API to perform routine or bulk actions. There is no need to write any code, as these actions are executed through a set of commands.

Among other features, Box CLI includes the following functionality:

  • Bulk actions - A csv file can be used to execute commands in bulk, and each row of the spreadsheet is treated as an individual API call.
  • As-User header - Act on behalf of another user.
  • Search API - Search for files and folders in your Box Enterprise account.
Working with an AI agent? Install the official Box skills (npx skills add box/box-for-ai) to help your assistant use the Box CLI and Box APIs correctly.

Table of contents

  • Getting Started
  • CLI Installation
  • Windows & macOS Installers
  • Linux & Node install
  • Quick Login with the Official Box CLI App
  • CLI and Server Authentication with JWT
  • Logout
  • Secure Storage
  • What is Stored Securely
  • [Platform Support](#platfor
Read from source at commit 9bb593128625OBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add cli --env GH_TOKEN=${GH_TOKEN} --env GITHUB_TOKEN=${GITHUB_TOKEN} -- npx -y @box/[email protected]
claude-desktop
{
  "mcpServers": {
    "cli": {
      "command": "npx",
      "args": [
        "-y",
        "@box/[email protected]"
      ],
      "env": {
        "GH_TOKEN": "${GH_TOKEN}",
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}
03

Exposed tools (4)

3 read · 1 write · 0 destructive.

ToolRiskDescription
dat.datreadStill here!
doc.docxread
templateKeywriteThe key of the template to update
testreadtest description
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (6 observation(s))
Network
none-observed
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (19)

MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/util.test.js:573
const secret = 'abcdefghijklmnopqrstuvwxyz123456';
LOWInventory / provenance · inv.hidden_file · CWE-1104
.glf
.glf
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mocharc.yml
.mocharc.yml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.nycrc
.nycrc
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierrc.js
.prettierrc.js
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/commands/ai/ask.js:3
const BoxCommand = require('../../box-command');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/commands/ai/ask.js:5
const utilities = require('../../util');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/commands/ai/extract-structured.js:3
const BoxCommand = require('../../box-command');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/commands/ai/extract-structured.js:5
const utilities = require('../../util');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/commands/ai/extract.js:3
const BoxCommand = require('../../box-command');
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@discoveryjs/json-ext, @github/keytar, @oclif/core, @oclif/plugin-autocomplete, @oclif/plugin-help, @oclif/plugin-not-found, @oclif/plugin-version, @oclif/table
Why it matters. 52 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOInventory / provenance · inv.oversize · CWE-1104
examples/User Creation & Provisioning/PersonalLocalUpload/Market Research/Statistics/Computed/California Sample.jpeg
examples/User Creation & Provisioning/PersonalLocalUpload/Market Research/Statistics/Computed/California Sample.jpeg
Why it matters. 1360415 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
examples/User Creation & Provisioning/PersonalLocalUpload/Sales Plays/Big Pharma/IMG_5170.JPG
examples/User Creation & Provisioning/PersonalLocalUpload/Sales Plays/Big Pharma/IMG_5170.JPG
Why it matters. 2281374 bytes not read
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
CHANGELOG.md:294
* Fix `keychain` access by bumping `keychain` library to `1.4.0` ([#459](https://github.com/box/boxcli/issues/459)) ([56919ce](https://github.com/box/boxcli/commit/56919cefabef6de4d96a1f69f7c80740a680
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/authentication.md:91
1. In the [Developer Console][dev-console], create or open an application that uses **Client Credentials Grant** authentication.
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/files.md:959
<value>] [--fields <value>] [--bulk-file-path <value>] [-h] [-v] [-y] [-q] [--access <value>] [--password <value>]
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/files.md:1009
<value>] [--fields <value>] [--bulk-file-path <value>] [-h] [-v] [-y] [-q] [--access <value>] [--password <value>]
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/files.md:1094
<value>] [--fields <value>] [--bulk-file-path <value>] [-h] [-v] [-y] [-q] [--access <value>] [--password <value>]
Why it matters. asks the agent to read credentials

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 9bb593128625full audit observations/trust-audit/mcp-server/box__boxcli.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-129bb593128625SAFEB89first audit
06

Questions

What is the @box/cli MCP server?

A command line interface for interacting with the Box API.

What tools does @box/cli expose?

4 in total: 3 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is @box/cli safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.

What credentials does @box/cli need?

It reads GH_TOKEN and GITHUB_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How current is this page?

The grade is for one exact copy of the source (9bb593128625), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement