Documentation Index
Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Claude Code Documentation Map
This is a comprehensive map of all Claude Code documentation pages with their headings, designed for easy navigation by LLMs.Note: This file is auto-generated by GitHub Actions. Do not edit manually. Last updated: 2026-05-16 23:57:57 UTC
Document Structure
This map uses a hierarchical structure:- ## marks documentation groups (e.g., ‘Getting started’)
- ### marks individual documentation pages
- Nested bullets show the heading structure within each page
- Each page title links to the full documentation
Getting started
overview
- Get started
- What you can do
- Use Claude Code everywhere
- Next steps
quickstart
- Before you begin
- Step 1: Install Claude Code
- Step 2: Log in to your account
- Step 3: Start your first session
- Step 4: Ask your first question
- Step 5: Make your first code change
- Step 6: Use Git with Claude Code
- Step 7: Fix a bug or add a feature
- Step 8: Test out other common workflows
- Essential commands
- Pro tips for beginners
- What’s next?
- Getting help
changelog
- (No headings found)
Core concepts
how-claude-code-works
- The agentic loop
- Models
- Tools
- What Claude can access
- Environments and interfaces
- Execution environments
- Interfaces
- Work with sessions
- Work across branches
- Resume or fork sessions
- The context window
- When context fills up
- Manage context with skills and subagents
- Stay safe with checkpoints and permissions
- Undo changes with checkpoints
- Control what Claude can do
- Work effectively with Claude Code
- Ask Claude Code for help
- It’s a conversation
- Interrupt and steer
- Be specific upfront
- Give Claude something to verify against
- Explore before implementing
- Delegate, don’t dictate
- What’s next
features-overview
- Overview
- Match features to your goal
- Build your setup over time
- Compare similar features
- Understand how features layer
- Combine features
- Understand context costs
- Context cost by feature
- Understand how features load
- Learn more
claude-directory
- Explore the directory
- What’s not shown
- Choose the right file
- File reference
- Troubleshoot configuration
- Application data
- Cleaned up automatically
- Kept until you delete them
- Plaintext storage
- Clear local data
- Related resources
context-window
- What the timeline shows
- What survives compaction
- Check your own session
- Related resources
Use Claude Code
memory
- CLAUDE.md vs auto memory
- CLAUDE.md files
- When to add to CLAUDE.md
- Choose where to put CLAUDE.md files
- Set up a project CLAUDE.md
- Write effective instructions
- Import additional files
- AGENTS.md
- How CLAUDE.md files load
- Load from additional directories
- Organize rules with
.claude/rules/- Set up rules
- Path-specific rules
- Share rules across projects with symlinks
- User-level rules
- Manage CLAUDE.md for large teams
- Deploy organization-wide CLAUDE.md
- Exclude specific CLAUDE.md files
- Auto memory
- Enable or disable auto memory
- Storage location
- How it works
- Audit and edit your memory
- View and edit with
/memory - Troubleshoot memory issues
- Claude isn’t following my CLAUDE.md
- I don’t know what auto memory saved
- My CLAUDE.md is too large
- Instructions seem lost after
/compact
- Related resources
permission-modes
- Available modes
- Switch permission modes
- Auto-approve file edits with acceptEdits mode
- Analyze before you edit with plan mode
- Review and approve a plan
- Set plan mode as the default
- Eliminate prompts with auto mode
- What the classifier blocks by default
- Boundaries you state in conversation
- When auto mode falls back
- Allow only pre-approved tools with dontAsk mode
- Skip all checks with bypassPermissions mode
- Protected paths
- See also
common-workflows
- Prompt recipes
- Understand new codebases
- Get a quick codebase overview
- Find relevant code
- Fix bugs efficiently
- Refactor code
- Work with tests
- Create pull requests
- Handle documentation
- Work in notes and non-code folders
- Work with images
- Reference files and directories
- Run Claude on a schedule
- Ask Claude about its capabilities
- Example questions
- Understand new codebases
- Resume previous conversations
- Run parallel sessions with worktrees
- Plan before editing
- Delegate research to subagents
- Pipe Claude into scripts
- Next steps
best-practices
- Give Claude a way to verify its work
- Explore first, then plan, then code
- Provide specific context in your prompts
- Provide rich content
- Configure your environment
- Write an effective CLAUDE.md
- Configure permissions
- Use CLI tools
- Connect MCP servers
- Set up hooks
- Create skills
- Create custom subagents
- Install plugins
- Communicate effectively
- Ask codebase questions
- Let Claude interview you
- Manage your session
- Course-correct early and often
- Manage context aggressively
- Use subagents for investigation
- Rewind with checkpoints
- Resume conversations
- Automate and scale
- Run non-interactive mode
- Run multiple Claude sessions
- Fan out across files
- Run autonomously with auto mode
- Avoid common failure patterns
- Develop your intuition
- Related resources
Platforms and integrations > Claude Code on the web
web-quickstart
- How sessions run
- Compare ways to run Claude Code
- Connect GitHub and create an environment
- Connect from your terminal
- Start a task
- Pre-fill sessions
- Review and iterate
- Troubleshoot setup
- No repositories appear after connecting GitHub
- The page only shows a GitHub login button
- “Not available for the selected organization”
/web-setupreturns “Unknown command”- “Could not create a cloud environment” or “No cloud environment available” when using
--remoteor ultraplan - Setup script failed
- New sessions hang or time out during setup
- Session keeps running after closing the tab
- Next steps
claude-code-on-the-web
- GitHub authentication options
- The cloud environment
- What’s available in cloud sessions
- Installed tools
- Work with GitHub issues and pull requests
- Link artifacts back to the session
- Run tests, start services, and add packages
- Resource limits
- Configure your environment
- Setup scripts
- Environment caching
- Setup scripts vs. SessionStart hooks
- Install dependencies with a SessionStart hook
- Network access
- Access levels
- Allow specific domains
- GitHub proxy
- Security proxy
- Default allowed domains
- Move tasks between web and terminal
- From terminal to web
- Tips for cloud tasks
- Send local repositories without GitHub
- From web to terminal
- Teleport requirements
--teleportis unavailable
- From terminal to web
- Work with sessions
- Manage context
- Review changes
- Share sessions
- Share from an Enterprise or Team account
- Share from a Max or Pro account
- Archive sessions
- Delete sessions
- Auto-fix pull requests
- How Claude responds to PR activity
- Security and isolation
- Troubleshooting
- Session creation failed
- Remote Control session expired or access denied
- Environment expired
- Limitations
- Related resources
routines
- Example use cases
- Create a routine
- Create from the web
- Create from the CLI
- Configure triggers
- Add a schedule trigger
- Schedule a one-off run
- Add an API trigger
- Trigger a routine
- API reference
- Add a GitHub trigger
- Supported events
- Filter pull requests
- How sessions map to events
- Add a schedule trigger
- Manage routines
- View and interact with runs
- Edit and control routines
- Repositories and branch permissions
- Connectors
- Environments and network access
- Usage and limits
- Troubleshooting
- “Routines are disabled by your organization’s policy”
- Related resources
ultraplan
- Launch ultraplan from the CLI
- Review and revise the plan in your browser
- Choose where to execute
- Execute on the web
- Send the plan back to your terminal
- Related resources
ultrareview
- Run ultrareview from the CLI
- Pricing and free runs
- Track a running review
- Run ultrareview non-interactively
- How ultrareview compares to /review
- Related resources
Platforms and integrations > Claude Code on desktop
desktop-quickstart
- Install
- Start your first session
- Now what?
- Coming from the CLI?
- What’s next
desktop
- Start a session
- Work with code
- Use the prompt box
- Add files and context to prompts
- Choose a permission mode
- Preview your app
- Review changes with diff view
- Review your code
- Monitor pull request status
- Arrange your workspace
- Run commands in the terminal
- Open and edit files
- Open files in other apps
- Switch view modes
- Keyboard shortcuts
- Check usage
- Let Claude use your computer
- When computer use applies
- Enable computer use
- App permissions
- Manage sessions
- Work in parallel with sessions
- Ask a side question without derailing the session
- Watch background tasks
- Run long-running tasks remotely
- Continue in another surface
- Sessions from Dispatch
- Extend Claude Code
- Connect external tools
- Use skills
- Install plugins
- Configure preview servers
- Auto-verify changes
- Configuration fields
- When to use
programvsruntimeExecutable
- When to use
- Port conflicts
- Examples
- Environment configuration
- Local sessions
- Remote sessions
- SSH sessions
- Pre-configure SSH connections for your team
- Restrict which SSH hosts users can connect to
- Enterprise configuration
- Admin console controls
- Managed settings
- Device management policies
- Authentication and SSO
- Data handling
- Deployment
- Coming from the CLI?
- CLI flag equivalents
- Shared configuration
- Feature comparison
- What’s not available in Desktop
- Troubleshooting
- Check your version
- 403 or authentication errors in the Code tab
- Blank or stuck screen on launch
- “Failed to load session”
- Session not finding installed tools
- Git and Git LFS errors
- MCP servers not working on Windows
- App won’t quit
- Windows-specific issues
- “Branch doesn’t exist yet” when opening in CLI
- Still stuck?
desktop-scheduled-tasks
- Compare scheduling options
- Create a scheduled task
- Schedule options
- How scheduled tasks run
- Missed runs
- Permissions for scheduled tasks
- Manage scheduled tasks
- Related resources
desktop-changelog
- (No headings found)
Platforms and integrations > Code review & CI/CD
code-review
- How reviews work
- Severity levels
- Rate and reply to findings
- Check run output
- What Code Review checks
- Set up Code Review
- Manually trigger reviews
- Customize reviews
- CLAUDE.md
- REVIEW.md
- What you can tune
- Example
- Keep it focused
- View usage
- Pricing
- Troubleshooting
- Retrigger a failed or timed-out review
- Review didn’t run and the PR shows a spend-cap message
- Find issues that aren’t showing as inline comments
- Related resources
github-actions
- Why use Claude Code GitHub Actions?
- What can Claude do?
- Claude Code Action
- Setup
- Quick setup
- Manual setup
- Upgrading from Beta
- Essential changes
- Breaking Changes Reference
- Before and After Example
- Example use cases
- Basic workflow
- Using skills
- Custom automation with prompts
- Common use cases
- Best practices
- CLAUDE.md configuration
- Security considerations
- Optimizing performance
- CI costs
- Configuration examples
- Using with Amazon Bedrock & Google Vertex AI
- Prerequisites
- For Google Cloud Vertex AI:
- For Amazon Bedrock:
- Prerequisites
- Troubleshooting
- Claude not responding to @claude commands
- CI not running on Claude’s commits
- Authentication errors
- Advanced configuration
- Action parameters
- Pass CLI arguments
- Alternative integration methods
- Customizing Claude’s behavior
- Action parameters
github-enterprise-server
- What works with GitHub Enterprise Server
- Admin setup
- GitHub App permissions
- Manual setup
- Network requirements
- Developer workflow
- Teleport sessions to your terminal
- Plugin marketplaces on GHES
- Add a GHES marketplace
- Allowlist GHES marketplaces in managed settings
- Limitations
- Troubleshooting
- Web session fails to clone repository
- Marketplace add fails with a policy error
- GHES instance not reachable
- Related resources
gitlab-ci-cd
- Why use Claude Code with GitLab?
- How it works
- What can Claude do?
- Setup
- Quick setup
- Manual setup (recommended for production)
- Example use cases
- Turn issues into MRs
- Get implementation help
- Fix bugs quickly
- Using with Amazon Bedrock & Google Vertex AI
- Configuration examples
- Basic .gitlab-ci.yml (Claude API)
- Amazon Bedrock job example (OIDC)
- Google Vertex AI job example (Workload Identity Federation)
- Best practices
- CLAUDE.md configuration
- Security considerations
- Optimizing performance
- CI costs
- Security and governance
- Troubleshooting
- Claude not responding to @claude commands
- Job can’t write comments or open MRs
- Authentication errors
- Advanced configuration
- Common parameters and variables
- Customizing Claude’s behavior
Platforms and integrations
platforms
- Where to run Claude Code
- Connect your tools
- Work when you are away from your terminal
- Related resources
- Platforms
- Integrations
- Remote access
remote-control
- Requirements
- Start a Remote Control session
- Connect from another device
- Enable Remote Control for all sessions
- Connection and security
- Remote Control vs Claude Code on the web
- Mobile push notifications
- Limitations
- Troubleshooting
- “Remote Control requires a claude.ai subscription”
- “Remote Control requires a full-scope login token”
- “Unable to determine your organization for Remote Control eligibility”
- “Remote Control is not yet enabled for your account”
- “Remote Control is disabled by your organization’s policy”
- “Remote credentials fetch failed”
- Choose the right approach
- Related resources
chrome
- Capabilities
- Prerequisites
- Get started in the CLI
- Enable Chrome by default
- Manage site permissions
- Example workflows
- Test a local web application
- Debug with console logs
- Automate form filling
- Draft content in Google Docs
- Extract data from web pages
- Run multi-site workflows
- Record a demo GIF
- Troubleshooting
- Extension not detected
- Browser not responding
- Connection drops during long sessions
- Windows-specific issues
- Common error messages
- See also
computer-use
- What you can do with computer use
- When computer use applies
- Enable computer use
- Approve apps per session
- How Claude works on your screen
- One session at a time
- Apps are hidden while Claude works
- Screenshots are downscaled automatically
- Stop at any time
- Safety and the trust boundary
- Example workflows
- Validate a native build
- Reproduce a layout bug
- Test a simulator flow
- Differences from the Desktop app
- Troubleshooting
- “Computer use is in use by another Claude session”
- macOS permissions prompt keeps reappearing
computer-usedoesn’t appear in/mcp
- See also
vs-code
- Prerequisites
- Install the extension
- Get started
- Use the prompt box
- Reference files and folders
- Resume past conversations
- Resume remote sessions from Claude.ai
- Customize your workflow
- Choose where Claude lives
- Run multiple conversations
- Switch to terminal mode
- Manage plugins
- Install plugins
- Manage marketplaces
- Automate browser tasks with Chrome
- VS Code commands and shortcuts
- Launch a VS Code tab from other tools
- Configure settings
- Extension settings
- VS Code extension vs. Claude Code CLI
- Rewind with checkpoints
- Run CLI in VS Code
- Switch between extension and CLI
- Include terminal output in prompts
- Monitor background processes
- Connect to external tools with MCP
- Work with git
- Create commits and pull requests
- Use git worktrees for parallel tasks
- Use third-party providers
- Security and privacy
- The built-in IDE MCP server
- Fix common issues
- Extension won’t install
- Spark icon not visible
- Cmd+Esc does nothing on macOS
- Claude Code never responds
- Uninstall the extension
- Next steps
jetbrains
- Supported IDEs
- Features
- Installation
- Marketplace installation
- Usage
- From your IDE
- From external terminals
- Configuration
- Claude Code settings
- Plugin settings
- General settings
- ESC key configuration
- Special configurations
- Remote development
- WSL configuration
- Allow WSL2 traffic through Windows Firewall
- Switch WSL2 to mirrored networking
- Troubleshooting
- Plugin not working
- IDE not detected
- Command not found
- Security considerations
slack
- Use cases
- Prerequisites
- Setting up Claude Code in Slack
- How it works
- Automatic detection
- Context gathering
- Session flow
- User interface elements
- App Home
- Message actions
- Repository selection
- Access and permissions
- User-level access
- Workspace-level access
- Channel-based access control
- What’s accessible where
- Best practices
- Writing effective requests
- When to use Slack vs. web
- Troubleshooting
- Sessions not starting
- Repository not showing
- Wrong repository selected
- Authentication errors
- Session expiration
- Current limitations
- Related resources
Agents and parallel work
agents
- Choose an approach
- Check on running work
- Learn more
sub-agents
- Built-in subagents
- Quickstart: create your first subagent
- Configure subagents
- Use the /agents command
- Choose the subagent scope
- Write subagent files
- Supported frontmatter fields
- Choose a model
- Control subagent capabilities
- Available tools
- Restrict which subagents can be spawned
- Scope MCP servers to a subagent
- Permission modes
- Preload skills into subagents
- Enable persistent memory
- Persistent memory tips
- Conditional rules with hooks
- Disable specific subagents
- Define hooks for subagents
- Hooks in subagent frontmatter
- Project-level hooks for subagent events
- Work with subagents
- Understand automatic delegation
- Invoke subagents explicitly
- Run subagents in foreground or background
- Common patterns
- Isolate high-volume operations
- Run parallel research
- Chain subagents
- Choose between subagents and main conversation
- Manage subagent context
- Resume subagents
- Auto-compaction
- Fork the current conversation
- Observe and steer running forks
- How forks differ from named subagents
- Limitations
- Example subagents
- Code reviewer
- Debugger
- Data scientist
- Database query validator
- Next steps
agent-view
- Quick start
- Monitor sessions with agent view
- Read session state
- Row summaries
- Pull request status
- Peek and reply
- Attach to a session
- Organize the list
- Filter sessions
- Keyboard shortcuts
- Dispatch new agents
- From agent view
- Dispatch to a specific directory
- From inside a session
- From your shell
- How file edits are isolated
- Set the model
- Permission mode, model, and effort
- Settings, plugins, and MCP servers
- From agent view
- Manage sessions from the shell
- How background sessions are hosted
- The supervisor process
- Where state is stored
- Turn off agent view
- Troubleshooting
claude agentslists subagents instead of opening agent view- Agent view opens with no sessions
- Cannot open agents because background tasks are running
- Prompt rejected as too short
- Sessions show as failed after waking your machine
- A session is slow to respond after attaching
.claude/worktrees/is filling up
- Limitations
- Related resources
agent-teams
- When to use agent teams
- Compare with subagents
- Enable agent teams
- Start your first agent team
- Control your agent team
- Choose a display mode
- Specify teammates and models
- Require plan approval for teammates
- Talk to teammates directly
- Assign and claim tasks
- Shut down teammates
- Clean up the team
- Enforce quality gates with hooks
- How agent teams work
- How Claude starts agent teams
- Architecture
- Use subagent definitions for teammates
- Permissions
- Context and communication
- Token usage
- Use case examples
- Run a parallel code review
- Investigate with competing hypotheses
- Best practices
- Give teammates enough context
- Choose an appropriate team size
- Size tasks appropriately
- Wait for teammates to finish
- Start with research and review
- Avoid file conflicts
- Monitor and steer
- Troubleshooting
- Teammates not appearing
- Too many permission prompts
- Teammates stopping on errors
- Lead shuts down before work is done
- Orphaned tmux sessions
- Limitations
- Next steps
worktrees
- Start Claude in a worktree
- Choose the base branch
- Copy gitignored files into worktrees
- Isolate subagents with worktrees
- Clean up worktrees
- Manage worktrees manually
- Non-git version control
- See also
Tools and plugins
mcp
- What you can do with MCP
- Find and build MCP servers
- Installing MCP servers
- Option 1: Add a remote HTTP server
- Option 2: Add a remote SSE server
- Option 3: Add a local stdio server
- Managing your servers
- Dynamic tool updates
- Automatic reconnection
- Push messages with channels
- Plugin-provided MCP servers
- MCP installation scopes
- Local scope
- Project scope
- User scope
- Scope hierarchy and precedence
- Environment variable expansion in
.mcp.json
- Practical examples
- Example: Monitor errors with Sentry
- Example: Connect to GitHub for code reviews
- Example: Query your PostgreSQL database
- Authenticate with remote MCP servers
- Use a fixed OAuth callback port
- Use pre-configured OAuth credentials
- Override OAuth metadata discovery
- Restrict OAuth scopes
- Use dynamic headers for custom authentication
- Add MCP servers from JSON configuration
- Import MCP servers from Claude Desktop
- Use MCP servers from Claude.ai
- Use Claude Code as an MCP server
- MCP output limits and warnings
- Raise the limit for a specific tool
- Respond to MCP elicitation requests
- Use MCP resources
- Reference MCP resources
- Scale with MCP Tool Search
- How it works
- For MCP server authors
- Configure tool search
- Exempt a server from deferral
- Use MCP prompts as commands
- Execute MCP prompts
- Managed MCP configuration
- Option 1: Exclusive control with managed-mcp.json
- Option 2: Policy-based control with allowlists and denylists
- Restriction options
- Example configuration
- How command-based restrictions work
- How URL-based restrictions work
- Allowlist behavior (
allowedMcpServers) - Denylist behavior (
deniedMcpServers) - Important notes
discover-plugins
- How marketplaces work
- Official Anthropic marketplace
- Code intelligence
- What Claude gains from code intelligence plugins
- External integrations
- Development workflows
- Output styles
- Code intelligence
- Try it: add the demo marketplace
- Add marketplaces
- Add from GitHub
- Add from other Git hosts
- Add from local paths
- Add from remote URLs
- Install plugins
- Manage installed plugins
- Apply plugin changes without restarting
- Manage marketplaces
- Use the interactive interface
- Use CLI commands
- Configure auto-updates
- Configure team marketplaces
- Security
- Troubleshooting
- /plugin command not recognized
- Common issues
- Code intelligence issues
- Next steps
plugins
- When to use plugins vs standalone configuration
- Quickstart
- Prerequisites
- Create your first plugin
- Plugin structure overview
- Develop more complex plugins
- Add Skills to your plugin
- Add LSP servers to your plugin
- Add background monitors to your plugin
- Ship default settings with your plugin
- Organize complex plugins
- Test your plugins locally
- Debug plugin issues
- Share your plugins
- Submit your plugin to the official marketplace
- Convert existing configurations to plugins
- Migration steps
- What changes when migrating
- Next steps
- For plugin users
- For plugin developers
skills
- Bundled skills
- Getting started
- Create your first skill
- Where skills live
- Live change detection
- Automatic discovery from parent and nested directories
- Skills from additional directories
- Configure skills
- Types of skill content
- Frontmatter reference
- Available string substitutions
- Add supporting files
- Control who invokes a skill
- Skill content lifecycle
- Pre-approve tools for a skill
- Pass arguments to skills
- Advanced patterns
- Inject dynamic context
- Run skills in a subagent
- Example: Research skill using Explore agent
- Restrict Claude’s skill access
- Override skill visibility from settings
- Share skills
- Generate visual output
- Troubleshooting
- Skill not triggering
- Skill triggers too often
- Skill descriptions are cut short
- Related resources
Automation
hooks-guide
- Set up your first hook
- What you can automate
- Get notified when Claude needs input
- Auto-format code after edits
- Block edits to protected files
- Re-inject context after compaction
- Audit configuration changes
- Reload environment when directory or files change
- Auto-approve specific permission prompts
- How hooks work
- Combine results from multiple hooks
- Read input and return output
- Hook input
- Hook output
- Structured JSON output
- Filter hooks with matchers
- Filter by tool name and arguments with the
iffield
- Filter by tool name and arguments with the
- Configure hook location
- Prompt-based hooks
- Agent-based hooks
- HTTP hooks
- Limitations and troubleshooting
- Limitations
- Hooks and permission modes
- Hook not firing
- Hook error in output
/hooksshows no hooks configured- Stop hook runs forever
- JSON validation failed
- Debug techniques
- Learn more
channels
- Supported channels
- Quickstart
- Security
- Enterprise controls
- Enable channels for your organization
- Restrict which channel plugins can run
- Research preview
- How channels compare
- Next steps
scheduled-tasks
- Compare scheduling options
- Run a prompt repeatedly with /loop
- Run on a fixed interval
- Let Claude choose the interval
- Run the built-in maintenance prompt
- Customize the default prompt with loop.md
- Stop a loop
- Set a one-time reminder
- Manage scheduled tasks
- How scheduled tasks run
- Jitter
- Seven-day expiry
- Cron expression reference
- Disable scheduled tasks
- Limitations
goal
- Compare to other autonomous workflows
- Use
/goal- Set a goal
- Write an effective condition
- Check status
- Clear a goal
- Resume with an active goal
- Run non-interactively
- How evaluation works
- Requirements
- See also
headless
- Basic usage
- Start faster with bare mode
- Examples
- Pipe data through Claude
- Add Claude to a build script
- Get structured output
- Stream responses
- Auto-approve tools
- Create a commit
- Customize the system prompt
- Continue conversations
- Next steps
deep-links
- How it works
- What a launched session shows
- Build a link
- Choose between
cwdandrepo
- Choose between
- Examples
- Embed a link in a runbook
- Open a link from the shell
- Registration and supported platforms
- Open a VS Code tab instead of a terminal
- Troubleshooting
- Clicking the link does nothing
- The link renders as plain text instead of being clickable
- The session opens in my home directory instead of the repo
- The link opens the wrong terminal
- Learn more
Troubleshooting
troubleshoot-install
- Find your error
- Run diagnostic checks
- Check network connectivity
- Verify your PATH
- Check for conflicting installations
- Check directory permissions
- Verify the binary works
- Common installation issues
- Install script returns HTML instead of a shell script
command not found: claudeafter installationcurl: (56) Failure writing output to destination- TLS or SSL connection errors
Failed to fetch version from downloads.claude.ai- Wrong install command on Windows
The process cannot access the fileduring Windows install- Install killed on low-memory Linux servers
- Install hangs in Docker
- Claude Desktop overrides the
claudecommand on Windows - Claude Code on Windows requires either Git for Windows (for bash) or PowerShell
- Claude Code does not support 32-bit Windows
- Linux musl or glibc binary mismatch
Illegal instructiondyld: cannot loadon macOSExec format erroron WSL1- npm install errors in WSL
- Permission errors during installation
- Native binary not found after npm install
- Login and authentication
- Reset your login
- OAuth error: Invalid code
- 403 Forbidden after login
- This organization has been disabled with an active subscription
- OAuth login fails in WSL2, SSH, or containers
- Not logged in or token expired
- Bedrock, Vertex, or Foundry credentials not loading
- Still stuck
troubleshooting
- Performance and stability
- High CPU or memory usage
- Auto-compaction stops with a thrashing error
- Command hangs or freezes
- Search and discovery issues
- Slow or incomplete search results on WSL
- Get more help
debug-your-config
- See what loaded into context
- Check resolved settings
- Check MCP servers
- Check hooks
- Test against a clean configuration
- Check common causes
- Related resources
errors
- Find your error
- Automatic retries
- Server errors
- API Error: 500 Internal server error
- API Error: Repeated 529 Overloaded errors
- Request timed out
- Auto mode cannot determine the safety of an action
- Usage limits
- You’ve hit your session limit
- Server is temporarily limiting requests
- Request rejected (429)
- Credit balance is too low
- Authentication errors
- Not logged in
- Invalid API key
- This organization has been disabled
- Routines are disabled by your organization’s policy
- OAuth token revoked or expired
- OAuth scope requirement
- Network and connection errors
- Unable to connect to API
- SSL certificate errors
- Host not allowed in a cloud session
- Request errors
- Prompt is too long
- Error during compaction: Conversation too long
- Request too large
- Image was too large
- PDF errors
- Extra inputs are not permitted
- There’s an issue with the selected model
- Claude Opus is not available with the Claude Pro plan
- thinking.type.enabled is not supported for this model
- Thinking budget exceeds output limit
- Tool use or thinking block mismatch
- Responses seem lower quality than usual
- Report an error
Setup and access
admin-setup
- Choose your API provider
- Decide how settings reach devices
- Decide what to enforce
- Set up usage visibility
- Review data handling
- Verify and onboard
- Next steps
setup
- System requirements
- Additional dependencies
- Install Claude Code
- Set up on Windows
- Alpine Linux and musl-based distributions
- Verify your installation
- Authenticate
- Update Claude Code
- Auto-updates
- Configure release channel
- Pin a minimum version
- Disable auto-updates
- Update manually
- Advanced installation options
- Install a specific version
- Install with Linux package managers
- Install with npm
- Binary integrity and code signing
- Verify the manifest signature
- Platform code signatures
- Uninstall Claude Code
- Native installation
- Homebrew installation
- WinGet installation
- apt / dnf / apk
- npm
- Remove configuration files
authentication
- Log in to Claude Code
- Set up team authentication
- Claude for Teams or Enterprise
- Claude Console authentication
- Cloud provider authentication
- Credential management
- Authentication precedence
- Generate a long-lived token
server-managed-settings
- Requirements
- Choose between server-managed and endpoint-managed settings
- Configure server-managed settings
- Verify settings delivery
- Access control
- Managed-only settings
- Current limitations
- Settings delivery
- Settings precedence
- Fetch and caching behavior
- Enforce fail-closed startup
- Security approval dialogs
- Platform availability
- Audit logging
- Security considerations
- See also
auto-mode-config
- Where the classifier reads configuration
- Define trusted infrastructure
- Override the block and allow rules
- Inspect the defaults and your effective config
- Review denials
- See also
Deployment
third-party-integrations
- Compare deployment options
- Configure proxies and gateways
- Amazon Bedrock
- Microsoft Foundry
- Google Vertex AI
- Best practices for organizations
- Invest in documentation and memory
- Simplify deployment
- Start with guided usage
- Pin model versions for cloud providers
- Configure security policies
- Leverage MCP for integrations
- Next steps
amazon-bedrock
- Prerequisites
- Sign in with Bedrock
- Set up manually
-
- Submit use case details
-
- Configure AWS credentials
- Advanced credential configuration
- Example configuration
- Configuration settings explained
-
- Configure Claude Code
-
- Pin model versions
- Map each model version to an inference profile
-
- Startup model checks
- IAM configuration
- 1M token context window
- Service tiers
- AWS Guardrails
- Use the Mantle endpoint
- Enable Mantle
- Select a Mantle model
- Run Mantle alongside the Invoke API
- Route Mantle through a gateway
- Mantle environment variables
- Troubleshooting
- Authentication loop with SSO and corporate proxies
- Region issues
- Mantle endpoint errors
- Additional resources
claude-platform-on-aws
- Prerequisites
- Setup
-
- Configure AWS credentials
-
- Configure Claude Code
-
- Pin model versions
-
- Use the Agent SDK
- Route through a corporate proxy
- Troubleshooting
403 ForbiddenorAccessDeniedon every request- Requests fail with a missing-workspace error
- Requests still go to
api.anthropic.com
- Additional resources
google-vertex-ai
- Prerequisites
- Sign in with Vertex AI
- Region configuration
- Set up manually
-
- Enable Vertex AI API
-
- Request model access
-
- Configure GCP credentials
- Advanced credential configuration
-
- Configure Claude Code
-
- Pin model versions
-
- Startup model checks
- IAM configuration
- 1M token context window
- Troubleshooting
- Additional resources
microsoft-foundry
- Prerequisites
- Setup
-
- Provision Microsoft Foundry resource
-
- Configure Azure credentials
-
- Configure Claude Code
-
- Pin model versions
-
- Run Claude Code
-
- Azure RBAC configuration
- Troubleshooting
- Additional resources
network-config
- Proxy configuration
- Environment variables
- Basic authentication
- CA certificate store
- Custom CA certificates
- mTLS authentication
- Network access requirements
- Additional resources
llm-gateway
- Gateway requirements
- Configuration
- Model selection
- LiteLLM configuration
- Prerequisites
- Basic LiteLLM setup
- Authentication methods
- Static API key
- Dynamic API key with helper
- Unified endpoint (recommended)
- Provider-specific pass-through endpoints (alternative)
- Claude API through LiteLLM
- Amazon Bedrock through LiteLLM
- Google Vertex AI through LiteLLM
- Claude Platform on AWS through a gateway
- Authentication methods
- Additional resources
devcontainer
- Add Claude Code to your dev container
- Persist authentication and settings across rebuilds
- Enforce organization policy
- Restrict network egress
- Run without permission prompts
- Try the reference container
- Next steps
Usage and costs
monitoring-usage
- Quick start
- Administrator configuration
- Configuration details
- Common configuration variables
- mTLS authentication
- Metrics cardinality control
- Traces (beta)
- Span hierarchy
- Span attributes
- Dynamic headers
- Settings configuration
- Script requirements
- Refresh behavior
- Multi-team organization support
- Example configurations
- Available metrics and events
- Standard attributes
- Metrics
- Metric details
- Session counter
- Lines of code counter
- Pull request counter
- Commit counter
- Cost counter
- Token counter
- Code edit tool decision counter
- Active time counter
- Events
- Event correlation attributes
- User prompt event
- Tool result event
- API request event
- API error event
- API request body event
- API response body event
- Tool decision event
- Permission mode changed event
- Auth event
- MCP server connection event
- Internal error event
- Plugin installed event
- Plugin loaded event
- Skill activated event
- At mention event
- API retries exhausted event
- Hook registered event
- Hook execution start event
- Hook execution complete event
- Compaction event
- Feedback survey event
- Interpret metrics and events data
- Usage monitoring
- Cost monitoring
- Alerting and segmentation
- Detect retry exhaustion
- Event analysis
- Audit security events
- Attribute actions to users
- Audit MCP activity
- Map security questions to events
- Send events to a SIEM
- Backend considerations
- For metrics
- For events/logs
- For traces
- Service information
- ROI measurement resources
- Security and privacy
- Monitor Claude Code on Amazon Bedrock
costs
- Track your costs
- Using the
/usagecommand
- Using the
- Managing costs for teams
- Rate limit recommendations
- Agent team token costs
- Reduce token usage
- Manage context proactively
- Choose the right model
- Reduce MCP server overhead
- Install code intelligence plugins for typed languages
- Offload processing to hooks and skills
- Move instructions from CLAUDE.md to skills
- Adjust extended thinking
- Delegate verbose operations to subagents
- Manage agent team costs
- Write specific prompts
- Work efficiently on complex tasks
- Background token usage
- Understanding changes in Claude Code behavior
analytics
- Access analytics for Team and Enterprise
- Enable contribution metrics
- Review summary metrics
- Explore the charts
- Track adoption
- Measure PRs per user
- View pull requests breakdown
- Find top contributors
- PR attribution
- Tagging criteria
- Attribution process
- Time window
- Excluded files
- Attribution notes
- Get the most from analytics
- Monitor adoption
- Measure ROI
- Identify power users
- Access data programmatically
- Access analytics for API customers
- View team insights
- Related resources
Plugin distribution
plugin-marketplaces
- Overview
- Walkthrough: create a local marketplace
- Create the marketplace file
- Marketplace schema
- Required fields
- Owner fields
- Optional fields
- Plugin entries
- Required fields
- Optional plugin fields
- Plugin sources
- Relative paths
- GitHub repositories
- Git repositories
- Git subdirectories
- npm packages
- Advanced plugin entries
- Strict mode
- Host and distribute marketplaces
- Host on GitHub (recommended)
- Host on other git services
- Private repositories
- Test locally before distribution
- Require marketplaces for your team
- Pre-populate plugins for containers
- Managed marketplace restrictions
- Common configurations
- How restrictions work
- Version resolution and release channels
- Set up release channels
- Example
- Assign channels to user groups
- Pin dependency versions
- Set up release channels
- Validation and testing
- Manage marketplaces from the CLI
- Plugin marketplace add
- Plugin marketplace list
- Plugin marketplace remove
- Plugin marketplace update
- Troubleshooting
- Marketplace not loading
- Marketplace validation errors
- Plugin installation failures
- Private repository authentication fails
- Marketplace updates fail in offline environments
- Git operations time out
- Plugins with relative paths fail in URL-based marketplaces
- Files not found after installation
- See also
plugin-dependencies
- Why constrain dependency versions
- Declare a dependency with a version constraint
- Depend on a plugin from another marketplace
- Tag plugin releases for version resolution
- How constraints interact
- Remove orphaned auto-installed dependencies
- Resolve dependency errors
- See also
Security and data
security
- How we approach security
- Security foundation
- Permission-based architecture
- Built-in protections
- User responsibility
- Protect against prompt injection
- Core protections
- Privacy safeguards
- Additional safeguards
- MCP security
- IDE security
- Cloud execution security
- Security best practices
- Working with sensitive code
- Team security
- Reporting security issues
- Related resources
data-usage
- Data policies
- Data training policy
- Development Partner Program
- Feedback using the
/feedbackcommand - Session quality surveys
- Data retention
- Data access
- Local Claude Code: Data flow and dependencies
- Cloud execution: Data flow and dependencies
- Telemetry services
- Default behaviors by API provider
- WebFetch domain safety check
zero-data-retention
- ZDR scope
- What ZDR covers
- What ZDR does not cover
- Features disabled under ZDR
- Data retention for policy violations
- Request ZDR
Adoption
communications-kit
- Launch communications
- Before you send
- The announcement
- Executive sponsor variant
- Pilot group variant
- Champion recruitment DM
- Tips and tricks campaign
- Get started
- Project memory
- Control and safety
- Connect your tools
- Automate your workflows
- Day-to-day development
- Share and scale
- Security and admin
- Quick reference
- FAQ responses
- Prompt templates
champion-kit
- The champion role
- What this should cost you
- Share what you discover
- What is worth sharing
- Where to share it
- The format that works
- Be the person people ask
- Answer with a prompt rather than an explanation
- Point at the feature rather than the documentation
- Questions you are likely to hear
- Grow the circle
- Patterns that tend to work
- Thirty-day playbook
- When someone wants to go deeper
- Respond to common concerns
- Quick-reference sheet
Settings and permissions
settings
- Configuration scopes
- Available scopes
- When to use each scope
- How scopes interact
- What uses scopes
- Settings files
- Available settings
- Global config settings
- Worktree settings
- Permission settings
- Permission rule syntax
- Sandbox settings
- Sandbox path prefixes
- Attribution settings
- File suggestion settings
- Hook configuration
- Compute managed settings with a policy helper
- Settings precedence
- Verify active settings
- Key points about the configuration system
- System prompt
- Excluding sensitive files
- Subagent configuration
- Plugin configuration
- Plugin settings
enabledPluginsextraKnownMarketplacesstrictKnownMarketplaces
- Managing plugins
- Plugin settings
- Environment variables
- Tools available to Claude
- See also
permissions
- Permission system
- Manage permissions
- Permission modes
- Permission rule syntax
- Match all uses of a tool
- Use specifiers for fine-grained control
- Wildcard patterns
- Tool-specific permission rules
- Bash
- Compound commands
- Process wrappers
- Read-only commands
- PowerShell
- Read and Edit
- WebFetch
- MCP
- Agent (subagents)
- Bash
- Extend permissions with hooks
- Working directories
- Additional directories grant file access, not configuration
- How permissions interact with sandboxing
- Managed settings
- Managed-only settings
- Settings precedence
- Example configurations
- See also
sandboxing
- Overview
- Why sandboxing matters
- How it works
- Filesystem isolation
- Network isolation
- OS-level enforcement
- Getting started
- Prerequisites
- Enable sandboxing
- Sandbox modes
- Configure sandboxing
- Granting subprocess write access to specific paths
- Security benefits
- Protection against prompt injection
- Reduced attack surface
- Transparent operation
- Security Limitations
- How sandboxing relates to permissions
- Advanced usage
- Custom proxy configuration
- Integration with existing security tools
- Best practices
- Open source
- Limitations
- What sandboxing does not cover
- See also
Model and responses
model-config
- Available models
- Model aliases
- Setting your model
- Restrict model selection
- Default model behavior
- Control the model users run on
- Merge behavior
- Mantle model IDs
- Special model behavior
defaultmodel settingopusplanmodel setting- Adjust effort level
- Choose an effort level
- Use ultrathink for one-off deep reasoning
- Set the effort level
- Adaptive reasoning and fixed thinking budgets
- Extended thinking
- Extended context
- Checking your current model
- Add a custom model option
- Environment variables
- Pin models for third-party deployments
- Customize pinned model display and capabilities
- Override model IDs per version
- Prompt caching configuration
fast-mode
- Toggle fast mode
- Use fast mode on Opus 4.7
- Understand the cost tradeoff
- Decide when to use fast mode
- Fast mode vs effort level
- Requirements
- Enable fast mode for your organization
- Require per-session opt-in
- Handle rate limits
- Research preview
- See also
output-styles
- Built-in output styles
- Change your output style
- Create a custom output style
- Frontmatter
- How output styles work
- Comparisons to related features
- Related resources
Interface
terminal-config
- Enter multiline prompts
- Enable Option key shortcuts on macOS
- Get a terminal bell or notification
- Play a sound with a Notification hook
- Configure tmux
- Match the color theme
- Create a custom theme
- Text and accent colors
- Status colors
- Input box and mode indicators
- Diff rendering
- Fullscreen mode
- Usage meter and speaker labels
- Shimmer variants and subagent colors
- Create a custom theme
- Switch to fullscreen rendering
- Paste large content
- Edit prompts with Vim keybindings
- Related resources
fullscreen
- Enable fullscreen rendering
- What changes
- Use the mouse
- Scroll the conversation
- Auto-follow
- Mouse wheel scrolling
- Scroll in the JetBrains IDE terminal
- Search and review the conversation
- Clear the conversation
- Use with tmux
- Keep native text selection
- Research preview
voice-dictation
- Requirements
- Enable voice dictation
- Hold to record
- Tap to record and send
- Change the dictation language
- Rebind the dictation key
- Troubleshooting
- Terminal not listed in macOS Microphone settings
- See also
statusline
- Set up a status line
- Use the /statusline command
- Manually configure a status line
- Disable the status line
- Build a status line step by step
- How status lines work
- Available data
- Context window fields
- Examples
- Context window usage
- Git status with colors
- Cost and duration tracking
- Display multiple lines
- Clickable links
- Rate limit usage
- Cache expensive operations
- Windows configuration
- Subagent status lines
- Tips
- Troubleshooting
keybindings
- Configuration file
- Contexts
- Available actions
- App actions
- History actions
- Chat actions
- Autocomplete actions
- Confirmation actions
- Permission actions
- Transcript actions
- History search actions
- Task actions
- Theme actions
- Help actions
- Tabs actions
- Attachments actions
- Footer actions
- Message selector actions
- Diff actions
- Model picker actions
- Select actions
- Plugin actions
- Settings actions
- Doctor actions
- Voice actions
- Scroll actions
- Keystroke syntax
- Modifiers
- Uppercase letters
- Chords
- Special keys
- Unbind default shortcuts
- Reserved shortcuts
- Terminal conflicts
- Vim mode interaction
- Validation
Reference
cli-reference
- CLI commands
- CLI flags
- System prompt flags
- See also
commands
- Commands across a typical workflow
- All commands
- MCP prompts
- See also
env-vars
- See also
tools-reference
- Configure tools with permission rules and hooks
- Agent tool behavior
- Bash tool behavior
- Edit tool behavior
- Glob tool behavior
- Grep tool behavior
- LSP tool behavior
- Monitor tool
- NotebookEdit tool behavior
- PowerShell tool
- Enable the PowerShell tool
- Shell selection in settings, hooks, and skills
- Preview limitations
- Read tool behavior
- WebFetch tool behavior
- WebSearch tool behavior
- Write tool behavior
- Check which tools are available
- See also
interactive-mode
- Keyboard shortcuts
- General controls
- Text editing
- Theme and display
- Multiline input
- Quick commands
- Transcript viewer
- Voice input
- Commands
- Vim editor mode
- Mode switching
- Navigation (NORMAL mode)
- Editing (NORMAL mode)
- Text objects (NORMAL mode)
- Visual mode
- Command history
- Reverse search with Ctrl+R
- Background bash commands
- How backgrounding works
- Shell mode with
!prefix
- Prompt suggestions
- Side questions with /btw
- Task list
- Session recap
- PR review status
- See also
checkpointing
- How checkpoints work
- Automatic tracking
- Rewind and summarize
- Restore vs. summarize
- Common use cases
- Limitations
- Bash command changes not tracked
- External changes not tracked
- Not a replacement for version control
- See also
hooks
- Hook lifecycle
- How a hook resolves
- Configuration
- Hook locations
- Matcher patterns
- Match MCP tools
- Hook handler fields
- Common fields
- Command hook fields
- Exec form and shell form
- HTTP hook fields
- MCP tool hook fields
- Prompt and agent hook fields
- Reference scripts by path
- Hooks in skills and agents
- The
/hooksmenu - Disable or remove hooks
- Hook input and output
- Common input fields
- Exit code output
- Exit code 2 behavior per event
- HTTP response handling
- JSON output
- Emit terminal notifications
- Add context for Claude
- Decision control
- Hook events
- SessionStart
- SessionStart input
- SessionStart decision control
- Persist environment variables
- Setup
- Setup input
- Setup decision control
- InstructionsLoaded
- InstructionsLoaded input
- InstructionsLoaded decision control
- UserPromptSubmit
- UserPromptSubmit input
- UserPromptSubmit decision control
- UserPromptExpansion
- UserPromptExpansion input
- UserPromptExpansion decision control
- PreToolUse
- PreToolUse input
- Bash
- Write
- Edit
- Read
- Glob
- Grep
- WebFetch
- WebSearch
- Agent
- AskUserQuestion
- ExitPlanMode
- PreToolUse decision control
- Defer a tool call for later
- PreToolUse input
- PermissionRequest
- PermissionRequest input
- PermissionRequest decision control
- Permission update entries
- PostToolUse
- PostToolUse input
- PostToolUse decision control
- PostToolUseFailure
- PostToolUseFailure input
- PostToolUseFailure decision control
- PostToolBatch
- PostToolBatch input
- PostToolBatch decision control
- PermissionDenied
- PermissionDenied input
- PermissionDenied decision control
- Notification
- Notification input
- SubagentStart
- SubagentStart input
- SubagentStop
- SubagentStop input
- TaskCreated
- TaskCreated input
- TaskCreated decision control
- TaskCompleted
- TaskCompleted input
- TaskCompleted decision control
- Stop
- Stop input
- Stop decision control
- StopFailure
- StopFailure input
- TeammateIdle
- TeammateIdle input
- TeammateIdle decision control
- ConfigChange
- ConfigChange input
- ConfigChange decision control
- CwdChanged
- CwdChanged input
- CwdChanged output
- FileChanged
- FileChanged input
- FileChanged output
- WorktreeCreate
- WorktreeCreate input
- WorktreeCreate output
- WorktreeRemove
- WorktreeRemove input
- PreCompact
- PreCompact input
- PostCompact
- PostCompact input
- SessionEnd
- SessionEnd input
- Elicitation
- Elicitation input
- Elicitation output
- ElicitationResult
- ElicitationResult input
- ElicitationResult output
- SessionStart
- Prompt-based hooks
- How prompt-based hooks work
- Prompt hook configuration
- Response schema
- Example: Multi-criteria Stop hook
- Agent-based hooks
- How agent hooks work
- Agent hook configuration
- Run hooks in the background
- Configure an async hook
- How async hooks execute
- Example: run tests after file changes
- Limitations
- Security considerations
- Disclaimer
- Security best practices
- Windows PowerShell tool
- Debug hooks
plugins-reference
- Plugin components reference
- Skills
- Agents
- Hooks
- MCP servers
- LSP servers
- Monitors
- Themes
- Plugin installation scopes
- Plugin manifest schema
- Complete schema
- Required fields
- Metadata fields
- Component path fields
- Experimental components
- User configuration
- Channels
- Path behavior rules
- Environment variables
- Persistent data directory
- Plugin caching and file resolution
- Path traversal limitations
- Share files within a marketplace with symlinks
- Plugin directory structure
- Standard plugin layout
- File locations reference
- CLI commands reference
- plugin install
- plugin uninstall
- plugin prune
- plugin enable
- plugin disable
- plugin update
- plugin list
- plugin details
- plugin tag
- Debugging and development tools
- Debugging commands
- Common issues
- Example error messages
- Hook troubleshooting
- MCP server troubleshooting
- Directory structure mistakes
- Distribution and versioning reference
- Version management
- See also
channels-reference
- Overview
- What you need
- Example: build a webhook receiver
- Test during the research preview
- Server options
- Notification format
- Expose a reply tool
- Gate inbound messages
- Relay permission prompts
- How relay works
- Permission request fields
- Add relay to a chat bridge
- Full example
- Package as a plugin
- See also
Glossary
glossary
- A
- Agent teams
- Agentic coding
- Agentic harness
- Agentic loop
- Auto memory
- Auto mode
- B
- Bare mode
- Bundled skills
- C
- Channel
- Checkpoint
.claudedirectory- CLAUDE.md
- Command
- Compaction
- Context window
- D
- Dispatch
- E
- Effort level
- Extended thinking
- H
- Hook
- M
- Managed settings
- MCP (Model Context Protocol)
- MCP Tool Search
- N
- Non-interactive mode
- O
- Output style
- P
- Permission mode
- Permission rule
- Plan mode
- Plugin
- Project trust
- Prompt injection
- R
- Remote Control
- Rules
- S
- Sandboxing
- Session
- Settings layers
- Skill
- Subagent
- Surface
- T
- Teleport
- Tool
- Turn
- W
- Worktree isolation
- Deprecated and renamed terms
Agent SDK
overview
- Get started
- Capabilities
- Claude Code features
- Compare the Agent SDK to other Claude tools
- Changelog
- Reporting bugs
- Branding guidelines
- License and terms
- Next steps
quickstart
- Prerequisites
- Setup
- Create a buggy file
- Build an agent that finds and fixes bugs
- Run your agent
- Try other prompts
- Customize your agent
- Key concepts
- Troubleshooting
- API error
thinking.type.enabledis not supported for this model
- API error
- Next steps
Core concepts
agent-loop
- The loop at a glance
- Turns and messages
- Message types
- Handle messages
- Tool execution
- Built-in tools
- Tool permissions
- Parallel tool execution
- Control how the loop runs
- Turns and budget
- Effort level
- Permission mode
- Model
- The context window
- What consumes context
- Automatic compaction
- Keep context efficient
- Sessions and continuity
- Handle the result
- Hooks
- Put it all together
- Next steps
claude-code-features
- Control filesystem settings with settingSources
- What settingSources does not control
- Project instructions (CLAUDE.md and rules)
- CLAUDE.md load locations
- Skills
- Hooks
- When to use which hook type
- Choose the right feature
- Related resources
sessions
- Choose an approach
- Continue, resume, and fork
- Automatic session management
- Python:
ClaudeSDKClient - TypeScript:
continue: true
- Python:
- Use session options with
query()- Capture the session ID
- Resume by ID
- Fork to explore alternatives
- Resume across hosts
- Related resources
Input and output
streaming-vs-single-mode
- Overview
- Streaming Input Mode (Recommended)
- How It Works
- Benefits
- Implementation Example
- Single Message Input
- When to Use Single Message Input
- Limitations
- Implementation Example
user-input
- Detect when Claude needs input
- Handle tool approval requests
- Respond to tool requests
- Handle clarifying questions
- Question format
- Option previews (TypeScript)
- Response format
- Support free-text input
- Complete example
- Question format
- Limitations
- Other ways to get user input
- Streaming input
- Custom tools
- Related resources
streaming-output
- Enable streaming output
- StreamEvent reference
- Message flow
- Stream text responses
- Stream tool calls
- Build a streaming UI
- Known limitations
- Next steps
structured-outputs
- Why structured outputs?
- Quick start
- Type-safe schemas with Zod and Pydantic
- Output format configuration
- Example: TODO tracking agent
- Error handling
- Related resources
Extend with tools
custom-tools
- Quick reference
- Create a custom tool
- Weather tool example
- Call a custom tool
- Add more tools
- Add tool annotations
- Control tool access
- Tool name format
- Configure allowed tools
- Handle errors
- Return images and resources
- Images
- Resources
- Return structured data
- Example: unit converter
- Next steps
- Related documentation
mcp
- Quickstart
- Add an MCP server
- In code
- From a config file
- Allow MCP tools
- Tool naming convention
- Grant access with allowedTools
- Discover available tools
- Transport types
- stdio servers
- HTTP/SSE servers
- SDK MCP servers
- MCP tool search
- Authentication
- Pass credentials via environment variables
- HTTP headers for remote servers
- OAuth2 authentication
- Examples
- List issues from a repository
- Query a database
- Error handling
- Troubleshooting
- Server shows “failed” status
- Tools not being called
- Connection timeouts
- Related resources
tool-search
- How tool search works
- Configure tool search
- Optimize tool discovery
- Limits
- Related documentation
subagents
- Overview
- Benefits of using subagents
- Context isolation
- Parallelization
- Specialized instructions and knowledge
- Tool restrictions
- Creating subagents
- Programmatic definition (recommended)
- AgentDefinition configuration
- Filesystem-based definition (alternative)
- What subagents inherit
- Invoking subagents
- Automatic invocation
- Explicit invocation
- Dynamic agent configuration
- Detecting subagent invocation
- Resuming subagents
- Tool restrictions
- Common tool combinations
- Troubleshooting
- Claude not delegating to subagents
- Filesystem-based agents not loading
- Windows: long prompt failures
- Related documentation
Customize behavior
modifying-system-prompts
- How system prompts work
- Decide on a starting point
- Customize agent behavior
- CLAUDE.md files for project-level instructions
- Load CLAUDE.md with the SDK
- Output styles for persistent configurations
- Create an output style
- Activate an output style
- Append to the
claude_codepreset- Improve prompt caching across users and machines
- Custom system prompts
- CLAUDE.md files for project-level instructions
- Compare the four approaches
- Use cases and best practices
- When to use CLAUDE.md
- When to use output styles
- When to use
systemPromptwith append - When to use custom
systemPrompt
- Combine approaches
- Combine an output style with session-specific additions
- See also
slash-commands
- Discovering Available Slash Commands
- Sending Slash Commands
- Common Slash Commands
/compact- Compact Conversation History- Clearing the conversation
- Creating Custom Slash Commands
- File Locations
- File Format
- Basic Example
- With Frontmatter
- Using Custom Commands in the SDK
- Advanced Features
- Arguments and Placeholders
- Bash Command Execution
- File References
- Organization with Namespacing
- Practical Examples
- Code Review Command
- Test Runner Command
- See Also
skills
- Overview
- How Skills Work with the SDK
- Using Skills with the SDK
- Skill Locations
- Creating Skills
- Tool Restrictions
- Discovering Available Skills
- Testing Skills
- Troubleshooting
- Skills Not Found
- Skill Not Being Used
- Additional Troubleshooting
- Related Documentation
- Skills Guides
- SDK Resources
plugins
- What are plugins?
- Loading plugins
- Path specifications
- Verifying plugin installation
- Using plugin skills
- Complete example
- Plugin structure reference
- Common use cases
- Development and testing
- Project-specific extensions
- Multiple plugin sources
- Troubleshooting
- Plugin not loading
- Skills not appearing
- Path resolution issues
- See also
Control and observability
permissions
- How permissions are evaluated
- Allow and deny rules
- Permission modes
- Available modes
- Set permission mode
- Mode details
- Accept edits mode (
acceptEdits) - Don’t ask mode (
dontAsk) - Bypass permissions mode (
bypassPermissions) - Plan mode (
plan)
- Accept edits mode (
- Related resources
hooks
- How hooks work
- Available hooks
- Configure hooks
- Matchers
- Callback functions
- Inputs
- Outputs
- Asynchronous output
- Examples
- Modify tool input
- Add context and block a tool
- Auto-approve specific tools
- Register multiple hooks
- Filter with regex matchers
- Track subagent activity
- Make HTTP requests from hooks
- Forward notifications to Slack
- Fix common issues
- Hook not firing
- Matcher not filtering as expected
- Hook timeout
- Tool blocked unexpectedly
- Modified input not applied
- Session hooks not available in Python
- Subagent permission prompts multiplying
- Recursive hook loops with subagents
- systemMessage not appearing in output
- Related resources
file-checkpointing
- How checkpointing works
- Implement checkpointing
- Common patterns
- Checkpoint before risky operations
- Multiple restore points
- Try it out
- Limitations
- Troubleshooting
- Checkpointing options not recognized
- User messages don’t have UUIDs
- “No file checkpoint found for message” error
- “ProcessTransport is not ready for writing” error
- Next steps
cost-tracking
- Understand token usage
- Get the total cost of a query
- Track per-step and per-model usage
- Track per-step usage
- Break down usage per model
- Accumulate costs across multiple calls
- Handle errors, caching, and token discrepancies
- Resolve output token discrepancies
- Track costs on failed conversations
- Track cache tokens
- Extend the prompt cache TTL to one hour
- Related documentation
observability
- How telemetry flows from the SDK
- Enable telemetry export
- Flush telemetry from short-lived calls
- Read agent traces
- Link traces to your application
- Tag telemetry from your agent
- Attribute actions to your end users
- Control sensitive data in exports
- Related documentation
todo-tracking
- Todo Lifecycle
- When Todos Are Used
- Examples
- Monitoring Todo Changes
- Real-time Progress Display
- Migrate to Task tools
- Related Documentation
Deployment
hosting
- Hosting Requirements
- Container-Based Sandboxing
- System Requirements
- Understanding the SDK Architecture
- Sandbox Provider Options
- Production Deployment Patterns
- Pattern 1: Ephemeral Sessions
- Pattern 2: Long-Running Sessions
- Pattern 3: Hybrid Sessions
- Pattern 4: Single Containers
- FAQ
- How do I communicate with my sandboxes?
- What is the cost of hosting a container?
- When should I shut down idle containers vs. keeping them warm?
- How often should I update the Claude Code CLI?
- How do I monitor container health and agent performance?
- How long can an agent session run before timing out?
- Next Steps
secure-deployment
- Threat model
- Built-in security features
- Security principles
- Security boundaries
- Least privilege
- Defense in depth
- Isolation technologies
- Sandbox runtime
- Containers
- gVisor
- Virtual machines
- Cloud deployments
- Credential management
- The proxy pattern
- Configuring Claude Code to use a proxy
- Implementing a proxy
- Credentials for other services
- Custom tools
- Traffic forwarding
- Filesystem configuration
- Read-only code mounting
- Writable locations
- Further reading
SDK references
typescript
- Installation
- Functions
query()- Parameters
- Returns
startup()- Parameters
- Returns
- Example
tool()- Parameters
ToolAnnotations
createSdkMcpServer()- Parameters
listSessions()- Parameters
- Return type:
SDKSessionInfo - Example
getSessionMessages()- Parameters
- Return type:
SessionMessage - Example
getSessionInfo()- Parameters
renameSession()- Parameters
tagSession()- Parameters
resolveSettings()- Parameters
- Return type:
ResolvedSettings - Example
- Types
Options- Handle slow or stalled API responses
Queryobject- Methods
applyFlagSettings()
WarmQuery- Methods
SDKControlInitializeResponseAgentDefinitionAgentMcpServerSpecSettingSource- Default behavior
- Why use settingSources
- Settings precedence
PermissionModeCanUseToolPermissionResultToolConfigMcpServerConfigMcpStdioServerConfigMcpSSEServerConfigMcpHttpServerConfigMcpSdkServerConfigWithInstanceMcpClaudeAIProxyServerConfig
SdkPluginConfig
- Message Types
SDKMessageSDKAssistantMessageSDKUserMessageSDKUserMessageReplaySDKResultMessageSDKSystemMessageSDKPartialAssistantMessageSDKCompactBoundaryMessageSDKPluginInstallMessageSDKPermissionDeniedMessageSDKPermissionDenialSDKMessageOrigin
- Hook Types
HookEventHookCallbackHookCallbackMatcherHookInputBaseHookInputPreToolUseHookInputPostToolUseHookInputPostToolUseFailureHookInputPostToolBatchHookInputNotificationHookInputUserPromptSubmitHookInputSessionStartHookInputSessionEndHookInputStopHookInputSubagentStartHookInputSubagentStopHookInputPreCompactHookInputPermissionRequestHookInputSetupHookInputTeammateIdleHookInputTaskCompletedHookInputConfigChangeHookInputWorktreeCreateHookInputWorktreeRemoveHookInput
HookJSONOutputAsyncHookJSONOutputSyncHookJSONOutput
- Tool Input Types
ToolInputSchemas- Agent
- AskUserQuestion
- Bash
- Monitor
- TaskOutput
- Edit
- Read
- Write
- Glob
- Grep
- TaskStop
- NotebookEdit
- WebFetch
- WebSearch
- TodoWrite
- TaskCreate
- TaskUpdate
- TaskGet
- TaskList
- ExitPlanMode
- ListMcpResources
- ReadMcpResource
- EnterWorktree
- Tool Output Types
ToolOutputSchemas- Agent
- AskUserQuestion
- Bash
- Monitor
- Edit
- Read
- Write
- Glob
- Grep
- TaskStop
- NotebookEdit
- WebFetch
- WebSearch
- TodoWrite
- TaskCreate
- TaskUpdate
- TaskGet
- TaskList
- ExitPlanMode
- ListMcpResources
- ReadMcpResource
- EnterWorktree
- Permission Types
PermissionUpdatePermissionBehaviorPermissionUpdateDestinationPermissionRuleValue
- Other Types
ApiKeySourceSdkBetaSlashCommandModelInfoAgentInfoMcpServerStatusMcpServerStatusConfigAccountInfoModelUsageConfigScopeNonNullableUsageUsageCallToolResultThinkingConfigSpawnedProcessSpawnOptionsMcpSetServersResultRewindFilesResultSDKStatusMessageSDKTaskNotificationMessageSDKToolUseSummaryMessageSDKHookStartedMessageSDKHookProgressMessageSDKHookResponseMessageSDKToolProgressMessageSDKAuthStatusMessageSDKTaskStartedMessageSDKTaskProgressMessageSDKTaskUpdatedMessageSDKFilesPersistedEventSDKRateLimitEventSDKLocalCommandOutputMessageSDKPromptSuggestionMessageAbortError
- Sandbox Configuration
SandboxSettings- Example usage
SandboxNetworkConfigSandboxFilesystemConfig- Permissions Fallback for Unsandboxed Commands
- See also
typescript-v2-preview
- Installation
- Quick start
- One-shot prompt
- Basic session
- Multi-turn conversation
- Session resume
- Cleanup
- API reference
unstable_v2_createSession()unstable_v2_resumeSession()unstable_v2_prompt()- SDKSession interface
- Feature availability
- See also
python
- Installation
- Choosing between
query()andClaudeSDKClient- Quick comparison
- When to use
query()(new session each time) - When to use
ClaudeSDKClient(continuous conversation)
- Functions
query()- Parameters
- Returns
- Example - With options
tool()- Parameters
- Input schema options
- Returns
- Example
ToolAnnotations
create_sdk_mcp_server()- Parameters
- Returns
- Example
list_sessions()- Parameters
- Return type:
SDKSessionInfo - Example
get_session_messages()- Parameters
- Return type:
SessionMessage - Example
get_session_info()- Parameters
- Example
rename_session()- Parameters
- Example
tag_session()- Parameters
- Example
- Classes
ClaudeSDKClient- Key Features
- Methods
- Context Manager Support
- Example - Continuing a conversation
- Example - Streaming input with ClaudeSDKClient
- Example - Using interrupts
- Example - Advanced permission control
- Types
SdkMcpToolTransportClaudeAgentOptions- Handle slow or stalled API responses
OutputFormatSystemPromptPresetSettingSource- Default behavior
- Why use setting_sources
- Settings precedence
AgentDefinitionPermissionModeCanUseToolToolPermissionContextPermissionResultPermissionResultAllowPermissionResultDenyPermissionUpdatePermissionRuleValueToolsPresetThinkingConfigSdkBetaMcpSdkServerConfigMcpServerConfigMcpStdioServerConfigMcpSSEServerConfigMcpHttpServerConfig
McpServerStatusConfigMcpStatusResponseMcpServerStatusSdkPluginConfig
- Message Types
MessageUserMessageAssistantMessageAssistantMessageErrorSystemMessageResultMessageStreamEventRateLimitEventRateLimitInfoTaskStartedMessageTaskUsageTaskProgressMessageTaskNotificationMessage
- Content Block Types
ContentBlockTextBlockThinkingBlockToolUseBlockToolResultBlock
- Error Types
ClaudeSDKErrorCLINotFoundErrorCLIConnectionErrorProcessErrorCLIJSONDecodeError
- Hook Types
HookEventHookCallbackHookContextHookMatcherHookInputBaseHookInputPreToolUseHookInputPostToolUseHookInputPostToolUseFailureHookInputUserPromptSubmitHookInputStopHookInputSubagentStopHookInputPreCompactHookInputNotificationHookInputSubagentStartHookInputPermissionRequestHookInputHookJSONOutputSyncHookJSONOutputHookSpecificOutputAsyncHookJSONOutput
- Hook Usage Example
- Tool Input/Output Types
- Agent
- AskUserQuestion
- Bash
- Monitor
- Edit
- Read
- Write
- Glob
- Grep
- NotebookEdit
- WebFetch
- WebSearch
- TodoWrite
- TaskCreate
- TaskUpdate
- TaskGet
- TaskList
- BashOutput
- KillBash
- ExitPlanMode
- ListMcpResources
- ReadMcpResource
- Advanced Features with ClaudeSDKClient
- Building a Continuous Conversation Interface
- Using Hooks for Behavior Modification
- Real-time Progress Monitoring
- Example Usage
- Basic file operations (using query)
- Error handling
- Streaming mode with client
- Using custom tools with ClaudeSDKClient
- Sandbox Configuration
SandboxSettings- Example usage
SandboxNetworkConfigSandboxIgnoreViolations- Permissions Fallback for Unsandboxed Commands
- See also
migration-guide
- Overview
- What’s Changed
- Migration Steps
- For TypeScript/JavaScript Projects
- For Python Projects
- Breaking changes
- Python: ClaudeCodeOptions renamed to ClaudeAgentOptions
- System prompt no longer default
- Settings sources default
- Why the Rename?
- Getting Help
- Next Steps
What’s New
index
- (No headings found)
2026-w19
- (No headings found)
2026-w18
- (No headings found)
2026-w17
- (No headings found)
2026-w16
- (No headings found)
2026-w15
- (No headings found)
2026-w14
- (No headings found)
2026-w13
- (No headings found)
Resources
legal-and-compliance
- Legal agreements
- License
- Commercial agreements
- Compliance
- Healthcare compliance (BAA)
- Usage policy
- Acceptable use
- Authentication and credential use
- Security and trust
- Trust and safety
- Security vulnerability reporting