Bash tool
The bash tool enables Claude to execute shell commands in a persistent bash session, allowing system operations, script execution, and command-line automation.
Overview
The bash tool provides Claude with:- Persistent bash session that maintains state
- Ability to run any shell command
- Access to environment variables and working directory
- Command chaining and scripting capabilities
Model compatibility
Use cases
- Development workflows: Run build commands, tests, and development tools
- System automation: Execute scripts, manage files, automate tasks
- Data processing: Process files, run analysis scripts, manage datasets
- Environment setup: Install packages, configure environments
Quick start
How it works
The bash tool maintains a persistent session:- Claude determines what command to run
- You execute the command in a bash shell
- Return the output (stdout and stderr) to Claude
- Session state persists between commands (environment variables, working directory)
Parameters
*Required unless using
restart
Example: Multi-step automation
Claude can chain commands to complete complex tasks:Implement the bash tool
The bash tool is implemented as a schema-less tool. When using this tool, you don’t need to provide an input schema as with other tools; the schema is built into Claude’s model and can’t be modified.1
Set up a bash environment
Create a persistent bash session that Claude can interact with:
2
Handle command execution
Create a function to execute commands and capture output:
3
Process Claude's tool calls
Extract and execute commands from Claude’s responses:
4
Implement safety measures
Add validation and restrictions:
Handle errors
When implementing the bash tool, handle various error scenarios:Follow implementation best practices
Security
Key recommendations
- Use
ulimitto set resource constraints - Filter dangerous commands (
sudo,rm -rf, etc.) - Run with minimal user permissions
- Monitor and log all command execution
Pricing
The bash tool adds 245 input tokens to your API calls. Additional tokens are consumed by:- Command outputs (stdout/stderr)
- Error messages
- Large file contents
Common patterns
Development workflows
- Running tests:
pytest && coverage report - Building projects:
npm install && npm run build - Git operations:
git status && git add . && git commit -m "message"
File operations
- Processing data:
wc -l *.csv && ls -lh *.csv - Searching files:
find . -name "*.py" | xargs grep "pattern" - Creating backups:
tar -czf backup.tar.gz ./data
System tasks
- Checking resources:
df -h && free -m - Process management:
ps aux | grep python - Environment setup:
export PATH=$PATH:/new/path && echo $PATH
Limitations
- No interactive commands: Cannot handle
vim,less, or password prompts - No GUI applications: Command-line only
- Session scope: Persists within conversation, lost between API calls
- Output limits: Large outputs may be truncated
- No streaming: Results returned after completion
Combining with other tools
The bash tool is most powerful when combined with the text editor and other tools.Next steps
Tool use overview
Learn about tool use with Claude
Text editor tool
View and edit text files with Claude