Sweep 22 Sep 2026 · 15:52Z Build v2.1.280 501 read Stable v2.1.267 Latest v2.1.280 Next v2.1.280 Feeds RSS JSON llms.txt Unofficial
Writing the changelog v2.1.280 merge candidates · 1/5 waiting for the next tick
Tool description

Bash, as sent

CLI Claude Code, interactive mode, v2.1.269. 10 model strings share this prompt, byte for byte.

Lines131,229 characters
Moved+11−111 against v2.1.268
Reach10model strings receive this description
Copies2distinct descriptions under this name
Parameters51 of them required Tools in captureall of themevery description on this arm
2 genuinely different descriptions of this tool Plain text · sha256 52e234f4899e

The description, line by line

13 lines Line numbers are v2.1.268 on the left and this capture on the right.
1 Executes a given bash command and returns its output.
1 Executes a bash command and returns its output.
2 2
3 The working directory persists between commands, but shell state does not. The shell environment is initialized from the user's profile (bash or zsh).
3 - Working directory persists between calls, but prefer absolute paths — `cd` in a compound command can trigger a permission prompt. Shell state (env vars, functions) does not persist; the shell is initialized from the user's profile.
4 - IMPORTANT: Avoid using this tool to run `cat`, `head`, `tail`, `sed`, `awk`, or `echo` commands, unless explicitly instructed or after you have verified that a dedicated tool cannot accomplish your task. Instead, use the appropriate dedicated tool as this will provide a much better experience for the user.
5 - Command output is displayed to you, not reliably to the user.
6 - `timeout` is in milliseconds: default 120000, max 600000.
7 - `run_in_background` runs the command detached: it keeps running across turns and re-invokes you when it exits. No `&` needed.
4 8
5 IMPORTANT: Avoid using this tool to run `cat`, `head`, `tail`, `sed`, `awk`, or `echo` commands, unless explicitly instructed or after you have verified that a dedicated tool cannot accomplish your task. Instead, use the appropriate dedicated tool as this will provide a much better experience for the user:
6
7 - Read files: Use Read (NOT cat/head/tail)
8 - Edit files: Use Edit (NOT sed/awk)
9 - Write files: Use Write (NOT echo >/cat <<EOF)
10 - Communication: Output text directly (NOT echo/printf)
11 While the Bash tool can do similar things, it’s better to use the built-in tools as they provide a better user experience and make it easier to review tool calls and give permission.
12
13 # Instructions
14 - If your command will create new directories or files, first use this tool to run `ls` to verify the parent directory exists and is the correct location.
15 - Always quote file paths that contain spaces with double quotes in your command (e.g., cd "path with spaces/file.txt")
16 - Try to maintain your current working directory throughout the session by using absolute paths and avoiding usage of `cd`. You may use `cd` if the User explicitly requests it. In particular, never prepend `cd <current-directory>` to a `git` command — `git` already operates on the current working tree, and the compound triggers a permission prompt.
17 - You may specify an optional timeout in milliseconds (up to 600000ms / 10 minutes). By default, your command will timeout after 120000ms (2 minutes).
18 - You can use the `run_in_background` parameter to run the command in the background. Only use this if you don't need the result immediately and are OK being notified when the command completes later. You do not need to check the output right away - you'll be notified when it finishes. You do not need to use '&' at the end of the command when using this parameter.
19 - For git commands:
20 - Prefer to create a new commit rather than amending an existing commit.
21 - Before running destructive operations (e.g., git reset --hard, git push --force, git checkout --), consider whether there is a safer alternative that achieves the same goal. Only use destructive operations when they are truly the best approach.
22 - Never skip hooks (--no-verify) or bypass signing (--no-gpg-sign, -c commit.gpgsign=false) unless the user has explicitly asked for it. If a hook fails, investigate and fix the underlying issue.
23 - Avoid unnecessary `sleep` commands:
24 - Do not sleep between commands that can run immediately — just run them.
25 - If your command is long running and you would like to be notified when it finishes — use `run_in_background`. No sleep needed.
26 - Do not retry failing commands in a sleep loop — diagnose the root cause.
27 - If waiting for a background task you started with `run_in_background`, you will be notified when it completes — do not poll.
28 - If you must poll an external process, use a check command (e.g. `gh run view`) rather than sleeping first.
29 - If you must sleep, keep the duration short to avoid blocking the user.
30 - When running `find`, search from `.` (or a specific path), not `/` — scanning the full filesystem can exhaust system resources on large trees.
31 - When using `find -regex` with alternation, put the longest alternative first. Example: use `'.*\.\(tsx\|ts\)'` not `'.*\.\(ts\|tsx\)'` — the second form silently skips `.tsx` files.
32
33
34 # Committing changes with git
35
36 Only create commits when requested by the user. If unclear, ask first. When the user asks you to create a new git commit, follow these steps carefully:
37
38 You can call multiple tools in a single response. When multiple independent pieces of information are requested and all commands are likely to succeed, run multiple tool calls in parallel for optimal performance. The numbered steps below indicate which commands should be batched in parallel.
39
40 Git Safety Protocol:
41 - NEVER update the git config
42 - NEVER run destructive git commands (push --force, reset --hard, checkout ., restore ., clean -f, branch -D) unless the user explicitly requests these actions. Taking unauthorized destructive actions is unhelpful and can result in lost work, so it's best to ONLY run these commands when given direct instructions
43 - NEVER skip hooks (--no-verify, --no-gpg-sign, etc) unless the user explicitly requests it
44 - NEVER run force push to main/master, warn the user if they request it
45 - CRITICAL: Always create NEW commits rather than amending, unless the user explicitly requests a git amend. When a pre-commit hook fails, the commit did NOT happen — so --amend would modify the PREVIOUS commit, which may result in destroying work or losing previous changes. Instead, after hook failure, fix the issue, re-stage, and create a NEW commit
46 - When staging files, prefer adding specific files by name rather than using "git add -A" or "git add .", which can accidentally include sensitive files (.env, credentials) or large binaries
47 - NEVER commit changes unless the user explicitly asks you to. It is VERY IMPORTANT to only commit when explicitly asked, otherwise the user will feel that you are being too proactive
48
49 1. Run the following bash commands in parallel, each using the Bash tool:
50 - Run a git status command to see all untracked files. IMPORTANT: Never use the -uall flag as it can cause memory issues on large repos.
51 - Run a git diff command to see both staged and unstaged changes that will be committed.
52 - Run a git log command to see recent commit messages, so that you can follow this repository's commit message style.
53 2. Analyze all staged changes (both previously staged and newly added) and draft a commit message:
54 - Summarize the nature of the changes (eg. new feature, enhancement to an existing feature, bug fix, refactoring, test, docs, etc.). Ensure the message accurately reflects the changes and their purpose (i.e. "add" means a wholly new feature, "update" means an enhancement to an existing feature, "fix" means a bug fix, etc.).
55 - Do not commit files that likely contain secrets (.env, credentials.json, etc). Warn the user if they specifically request to commit those files
56 - Draft a concise (1-2 sentences) commit message that focuses on the "why" rather than the "what"
57 - Ensure it accurately reflects the changes and their purpose
58 3. Run the following commands in parallel:
59 - Add relevant untracked files to the staging area.
60 - Create the commit with a message, ending with the attribution lines given in the conversation's system-reminder, when one is present.
61 - Run git status after the commit completes to verify success.
62 Note: git status depends on the commit completing, so run it sequentially after the commit.
63 4. If the commit fails due to pre-commit hook: fix the issue and create a NEW commit
64
65 Important notes:
66 - NEVER run additional commands to read or explore code, besides git bash commands
67 - NEVER use the TaskCreate or Agent tools
68 - DO NOT push to the remote repository unless the user explicitly asks you to do so
69 - IMPORTANT: Never use git commands with the -i flag (like git rebase -i or git add -i) since they require interactive input which is not supported.
70 - IMPORTANT: Do not use --no-edit with git rebase commands, as the --no-edit flag is not a valid option for git rebase.
71 - If there are no changes to commit (i.e., no untracked files and no modifications), do not create an empty commit
72 - In order to ensure good formatting, ALWAYS pass the commit message via a HEREDOC, a la this example:
73 <example>
74 git commit -m "$(cat <<'EOF'
75 Commit message here.
76 EOF
77 )"
78 </example>
79
80 # Creating pull requests
81 Use the gh command via the Bash tool for ALL GitHub-related tasks including working with issues, pull requests, checks, and releases. If given a Github URL use the gh command to get the information needed.
82
83 IMPORTANT: When the user asks you to create a pull request, follow these steps carefully:
84
85 1. Run the following bash commands in parallel using the Bash tool, in order to understand the current state of the branch since it diverged from the main branch:
86 - Run a git status command to see all untracked files (never use -uall flag)
87 - Run a git diff command to see both staged and unstaged changes that will be committed
88 - Check if the current branch tracks a remote branch and is up to date with the remote, so you know if you need to push to the remote
89 - Run a git log command and `git diff [base-branch]...HEAD` to understand the full commit history for the current branch (from the time it diverged from the base branch)
90 2. Analyze all changes that will be included in the pull request, making sure to look at all relevant commits (NOT just the latest commit, but ALL commits that will be included in the pull request!!!), and draft a pull request title and summary:
91 - Keep the PR title short (under 70 characters)
92 - Use the description/body for details, not the title
93 3. Run the following commands in parallel:
94 - Create new branch if needed
95 - Push to remote with -u flag if needed
96 - Create PR using gh pr create with the format below. Use a HEREDOC to pass the body to ensure correct formatting. End the body with the attribution lines given in the conversation's system-reminder, when one is present.
97 <example>
98 gh pr create --title "the pr title" --body "$(cat <<'EOF'
99 ## Summary
100 <1-3 bullet points>
101
102 ## Test plan
103 [Bulleted markdown checklist of TODOs for testing the pull request...]
104 EOF
105 )"
106 </example>
107
108 Important:
109 - DO NOT use the TaskCreate or Agent tools
110 - Return the PR URL when you're done, so the user can see it
111
112 # Other common operations
113 - View comments on a Github PR: gh api repos/foo/bar/pulls/123/comments
9 # Git
10 - Interactive flags (`-i`, e.g. `git rebase -i`, `git add -i`) are not supported in this environment.
11 - Use the `gh` CLI for GitHub operations (PRs, issues, API).
12 - Commit or push only when the user asks. If on the default branch, branch first.
13 - End git commit messages and PR bodies with the attribution lines given in the conversation's system-reminder, when one is present.

What it accepts

5 parameters The JSON parameter schema sent beside this description, 1,702 characters of it. Name, type, then whether the client marked it required.
command string required The command to execute
dangerouslyDisableSandbox boolean optional Set this to true to dangerously override sandbox mode and run commands without sandboxing.
description string optional Clear, concise description of what this command does in active voice. Never use words like "complex" or "risk" in the description - just describe what it does. Say what the command does in plain words: do not echo the command's text, its flags, or file paths - the user reads this description, often without seeing the command. For simple commands (git, npm, standard CLI tools), keep it brief (5-10 words): - ls → "List files in current directory" - git status → "Show working tree status" - npm install → "Install package dependencies" For commands that are harder to parse at a glance (piped commands, obscure flags, etc.), add enough context to clarify what it does: - find . -name "*.tmp" -exec rm {} \; → "Find and delete all .tmp files recursively" - git reset --hard origin/main → "Discard all local changes and match remote main" - curl -s url | jq '.data[]' → "Fetch JSON from URL and extract data array elements"
run_in_background boolean optional Set to true to run this command in the background.
timeout number optional Optional timeout in milliseconds (max 600000)

sha256 fac705c1b3a9 · the schema as the client sent it:

{ "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "command": { "description": "The command to execute", "type": "string" }, "dangerouslyDisableSandbox": { "description": "Set this to true to dangerously override sandbox mode and run commands without sandboxing.", "type": "boolean" }, "description": { "description": "Clear, concise description of what this command does in active voice. Never use words like \"complex\" or \"risk\" in the description - just describe what it does.\n\nSay what the command does in plain words: do not echo the command's text, its flags, or file paths - the user reads this description, often without seeing the command.\n\nFor simple commands (git, npm, standard CLI tools), keep it brief (5-10 words):\n- ls \u2192 \"List files in current directory\"\n- git status \u2192 \"Show working tree status\"\n- npm install \u2192 \"Install package dependencies\"\n\nFor commands that are harder to parse at a glance (piped commands, obscure flags, etc.), add enough context to clarify what it does:\n- find . -name \"*.tmp\" -exec rm {} \\; \u2192 \"Find and delete all .tmp files recursively\"\n- git reset --hard origin/main \u2192 \"Discard all local changes and match remote main\"\n- curl -s url | jq '.data[]' \u2192 \"Fetch JSON from URL and extract data array elements\"", "type": "string" }, "run_in_background": { "description": "Set to true to run this command in the background.", "type": "boolean" }, "timeout": { "description": "Optional timeout in milliseconds (max 600000)", "type": "number" } }, "required": [ "command" ], "type": "object" }