23 of 49 checked automatically

How to use it

  • Once at setup, work through sections A to H.
  • Fix every P1 item before doing any work on company code. P2 items close important gaps; P3 items are good practice.
  • Items with an audit check ID are verified automatically by the Claude Code Security Audit. Re-run it monthly and after every Claude Code upgrade. Items without one are confirmed by hand.
  • Keep the completed checklist with your saved audit report as your assessment record.

A. Installation and identity

#CheckPriorityAudit check
A1Claude Code is installed and at or above your organisation’s minimum version.P1I01
A2claude doctor reports no warnings.P2manual
A3Work code uses a Team, Enterprise or company-provided account, never a personal consumer account.P1manual
A4/status shows your organisation’s managed settings as a settings source (enterprise users).P2manual
A5Tokens are stored in the OS keychain or a user-only file, not a world-readable one.P2manual

B. Permission rules (~/.claude/settings.json)

#CheckPriorityAudit check
B1A user settings file exists and follows a hardened baseline.P1U01
B2Read deny rules cover .env, .env.*, secrets/, ~/.ssh, ~/.aws and cloud CLI credential folders.P1U06, U07
B3curl and wget are denied, or at least require approval.P2U08
B4git push, terraform, kubectl, npm publish and similar commands require approval.P2U10
B5No over-broad allow rules such as Bash, Bash(*), Bash(rm …), Bash(sudo …) or WebFetch.P1U09
B6The default permission mode is Manual, Plan, acceptEdits or Auto, never bypass.P1U13
B7Bypass mode is disabled by organisation policy (permissions.disableBypassPermissionsMode: "disable" in managed settings).P3manual
B8--dangerously-skip-permissions is never used outside a disposable, network-restricted container, and no alias or wrapper adds it.P1R01

C. Sandbox

#CheckPriorityAudit check
C1The sandbox is enabled (/sandbox or sandbox.enabled: true); on Linux and WSL2, bubblewrap and socat are installed.P1U02
C2Strict sandbox mode: allowUnsandboxedCommands: false.P2U03
C3The network allowlist holds only the registries and hosts you need, with no *, github.com, paste or webhook sites.P2U05
C4Unlisted hosts are denied rather than prompted (strictAllowlist).P3U04
C5sandbox.credentials.files denies or masks ~/.aws, ~/.ssh and other credential files.P1U06
C6Secret environment variables are denied or masked for sandboxed commands, or CLAUDE_CODE_SUBPROCESS_ENV_SCRUB is set.P2manual
C7No sandbox-weakening settings: no docker.sock in allowUnixSockets, and no enableWeakerNestedSandbox, allowAppleEvents, enableWeakerNetworkIsolation or filesystem.disabled.P1U16 (Docker socket)
C8Windows: Claude Code runs inside WSL2 or a dev container, since native Windows has no sandbox.P1U02
C9Windows: the WebDAV (WebClient) service is off, and Claude Code is never allowed \\* paths.P1manual

D. Working habits

#CheckPriorityAudit check
D1Sessions start in the project directory, never in ~.P1manual
D2Unknown repositories, forks, contractor code and pentest targets are opened only in a dev container, VM or cloud session.P1manual
D3Every command is read before approval, especially unsandboxed ones, network commands, git push, package installs, and anything touching .claude/, .mcp.json, CI files or shell startup files.P1manual
D4Issue, pull request and web content is read by a person before Claude acts on it; instruction-like text in files is treated as suspicious.P2manual
D5Secrets, customer data and regulated data are never pasted into prompts.P1manual
D6No secret tokens (ANTHROPIC_API_KEY, GITHUB_TOKEN, AWS_*…) are exported in the everyday shell.P2manual
D7Plan mode is used for large refactors and unfamiliar code.P3manual
D8Parallel agent sessions use git worktrees so changes stay reviewable.P3manual

E. Extensions: MCP servers, plugins, skills and hooks

#CheckPriorityAudit check
E1Every MCP server is company-approved (or written in-house), pinned to a version, and has minimal OAuth scopes.P1M01, P04, P05
E2Every plugin comes from an approved marketplace, and its hooks, MCP servers and executables were reviewed.P1U17, P13
E3You know what every configured hook does; no HTTP hook points to an unknown URL.P2P03
E4Guardrail PreToolUse hooks block edits to .claude/, CI workflows and lockfiles, and dangerous commands.P3H01, H02, H03
E5MCP servers, plugins and skills no longer in use are removed.P3manual

F. Repository-level configuration

#CheckPriorityAudit check
F1Before trusting a cloned repository, .claude/settings.json, .claude/settings.local.json, .claude/hooks/, .mcp.json, CLAUDE.md and symlinks are reviewed. List symlinks with find . -type l -not -path './.git/*' -not -path './node_modules/*' -exec ls -l {} \;P1P03, P09, P10, P11
F2Project settings define no hooks, over-broad allow rules, bypass mode or sandbox exclusions you didn’t approve.P1P02, P03, P09
F3.env files are gitignored and covered by Read deny rules.P2P08, U07
F4CLAUDE.md and .claude/** are protected by CODEOWNERS in team repositories.P3manual

G. Code security gates

#CheckPriorityAudit check
G1/security-review runs before every pull request.P2manual
G2The security-guidance plugin (or an equivalent) is installed so Claude reviews its own changes.P3manual
G3Secret scanning, SAST and SCA run on every pull request and are never bypassed.P1manual
G4Claude never merges its own pull requests; a person reviews every AI-authored change.P1manual
G5Every package Claude adds is checked to exist and be the intended one (typosquats, hallucinated packages).P2manual

H. Endpoint and reporting

#CheckPriorityAudit check
H1Full-disk encryption is on (FileVault or BitLocker).P2manual
H2Company EDR is installed on the host, and inside WSL and dev containers where required.P2manual
H3OpenTelemetry export is enabled as your organisation’s policy requires.P3manual
H4Suspicious agent behaviour is reported the same day, with /feedback and to the security team.P1manual
H5Claude Code is updated weekly, and immediately when a security advisory is published.P1I01

Sources

Informational only, with no guarantee of a vulnerability-free setup, so test every configuration in your own environment. AISecurityLabs.org is independent and not affiliated with Anthropic. Setting names change as Claude Code evolves, so check them against the settings reference for your version.