Every tool says its `sessions` (chat, agent or both). The file tools read, write, edit, glob, grep and list are shared; mkdir, mv, rm, search, python and the forge verbs (commit, branch, pr, merge, tag, release) are the chat's; show and recall are new and shared. New fields: `requires` (page, display, forge) with the exact `unavailable` answer, and `confirm: always` for merge, tag and release. knowledge_*, notes_search, note_view and note_manage leave the chat. Default rules for the new tools; modes.json says what `confirm` does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
55 lines
2.5 KiB
JSON
55 lines
2.5 KiB
JSON
{
|
|
"name": "bash",
|
|
"scope": "cli",
|
|
"sessions": "agent",
|
|
"risk": "execute",
|
|
"exclusive": false,
|
|
"block": "shell",
|
|
"purpose": "description",
|
|
"aliases": {
|
|
"cli": [],
|
|
"llembas": [
|
|
"shell_run"
|
|
]
|
|
},
|
|
"argument_aliases": {
|
|
"workdir": "cwd"
|
|
},
|
|
"description": "Run a shell command (bash) and return its combined output and exit status.\n\n- Each call is a fresh shell: `cd` and variables do not carry over. Use `cwd` instead of `cd`.\n- Use the dedicated tools for files: read, not cat; edit/write, not sed or heredocs; grep and glob, not find.\n- Quote paths that contain spaces.\n- A command still running when `timeout` passes (default {{timeout}}, up to {{timeout_max}}) is not killed: it goes on in the background as a job, and the call returns what it had printed with the job id.{{background}}\n- Git: do not commit, amend, push or change git config unless asked. Before a commit, check `git status` and `git diff`, stage files by name, never commit secrets.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"command": {
|
|
"type": "string",
|
|
"description": "The command line"
|
|
},
|
|
"description": {
|
|
"description": "One short sentence for the user: what this command is for — what you want to find out or get done. Shown when they are asked to allow it, and on the tool line.",
|
|
"type": "string"
|
|
},
|
|
"cwd": {
|
|
"description": "Directory to run in (default: working directory)",
|
|
"type": "string"
|
|
},
|
|
"timeout": {
|
|
"description": "Milliseconds to wait for the command before it goes on in the background",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 600000
|
|
},
|
|
"background": {
|
|
"description": "Run in the background from the start and return a job id at once",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"command"
|
|
]
|
|
},
|
|
"variables": {
|
|
"timeout": "how long a command may run before it goes on in the background when the call names no timeout, in words (\"2 minutes\")",
|
|
"timeout_max": "the longest timeout a call may ask for, in words (\"10 minutes\")",
|
|
"background": "where commands may run in the background: \" For a server, a watcher or anything long, set `background: true`: it returns at once with a job id. Read a job's output with job_output, list jobs with job_list, stop one with job_stop; you are told when one ends.\" — otherwise empty, and the `background` parameter is not sent"
|
|
}
|
|
}
|