Справочник инструментов
Полный справочник по инструментам, которые может использовать Claude Code, включая требования к разрешениям и поведение каждого инструмента.
Claude Code имеет доступ к набору встроенных инструментов, которые помогают ему понять и изменить вашу кодовую базу. Названия инструментов — это точные строки, которые вы используете в правилах разрешений, списках инструментов подагентов и сопоставителях hooks.
Чтобы контролировать, какие инструменты может использовать Claude и когда он запрашивает разрешение, настройте правила разрешений в ваших параметрах, hooks или списке инструментов подагента. См. Настройка инструментов с помощью правил разрешений и hooks для каждого места, которое принимает имя инструмента.
Чтобы добавить пользовательские инструменты, подключите MCP сервер. Чтобы расширить Claude переиспользуемыми рабочими процессами на основе подсказок, напишите skill, который работает через существующий инструмент Skill вместо добавления новой записи инструмента.
В планах Pro, Max и Team Claude Code запускает сеансы в режиме auto, где классификатор решает большинство этих подсказок вместо вас. Столбец Permission required показывает, запрашивает ли инструмент разрешение в режиме Manual для путей внутри рабочего каталога. Инструменты доступа к файлам, отмеченные как No, включая Read, Grep и Glob, по-прежнему запрашивают разрешение для путей вне рабочего каталога и дополнительных каталогов. Bash отмечен как Yes, но запускает встроенный набор команд только для чтения без запроса разрешения.
| Инструмент | Описание | Требуется разрешение |
|---|---|---|
Agent |
Создает подагента с собственным окном контекста для выполнения задачи. С включенными командами агентов вызов, содержащий name, может запустить товарища по команде вместо этого. См. Поведение инструмента Agent |
No |
Artifact |
Публикует HTML или Markdown файл как артефакт: приватную интерактивную страницу на claude.ai. Вы можете поделиться ею по публичной ссылке или внутри вашей организации в планах Team и Enterprise, где публичный доступ требует, чтобы Owner включил его. Требует план Pro, Max, Team или Enterprise и аутентификацию /login; см. Доступность |
Yes |
AskUserQuestion |
Задает вопросы с несколькими вариантами ответов для сбора требований или уточнения неоднозначности. Вопросы остаются открытыми до тех пор, пока вы на них не ответите по умолчанию. См. Поведение инструмента AskUserQuestion | No |
Bash |
Выполняет команды shell в вашей среде. См. Поведение инструмента Bash | Yes |
CronCreate |
Планирует повторяющуюся или одноразовую подсказку в текущем сеансе. Задачи привязаны к сеансу и восстанавливаются при --resume или --continue, если не истекли. См. запланированные задачи |
No |
CronDelete |
Отменяет запланированную задачу по ID | No |
CronList |
Выводит список всех запланированных задач в сеансе | No |
Edit |
Вносит целевые изменения в конкретные файлы. См. Поведение инструмента Edit | Yes |
EndConversation |
Завершает сеанс в редких случаях постоянного оскорбительного ввода или когда вы просите Claude продемонстрировать инструмент. Требует Claude Code v2.1.213 или позже. См. Поведение инструмента EndConversation | No |
EnterPlanMode |
Переключается в режим планирования для разработки подхода перед кодированием | No |
EnterWorktree |
Создает изолированный git worktree и переключается в него. Передайте path для переключения в существующий worktree вместо создания нового. При первом входе целевой путь может быть worktree текущего репозитория или, в многорепозиторном рабочем пространстве, репозитория, вложенного в него. До v2.1.203 worktree вложенного репозитория был отклонен. path вне .claude/worktrees/ запрашивает ваше одобрение перед входом, так как он перемещает рабочий каталог сеанса и доступ на запись в это место. Создание новых worktrees и пути под .claude/worktrees/ не запрашивают разрешение. До v2.1.206 Claude входил в пути вне .claude/worktrees/ без запроса. Из сеанса worktree или из подагента с закрепленным рабочим каталогом, таким как isolation: worktree, доступна только форма path и целевой путь должен быть под .claude/worktrees/ репозитория сеанса |
Yes |
ExitPlanMode |
Представляет план для одобрения и выходит из режима планирования | Yes |
ExitWorktree |
Выходит из сеанса worktree и возвращается в исходный каталог. Недоступно подагентам, которые уже работают в собственном рабочем каталоге, например с isolation: worktree |
No |
Glob |
Находит файлы на основе сопоставления шаблонов. Отсутствует по умолчанию на macOS, Linux и WSL. См. Поведение инструмента Glob | No |
Grep |
Ищет шаблоны в содержимом файлов. Отсутствует по умолчанию на macOS, Linux и WSL. См. Поведение инструмента Grep | No |
ListAgents |
Выводит список агентов, с которыми Claude может общаться через SendMessage: подагентов в сеансе, товарищей по команде команды агентов, ваши другие локальные сеансы Claude Code и, пока этот сеанс подключен к Remote Control, ваши сеансы Claude Code в веб-версии и ваши сеансы Remote Control на других машинах. Поддерживает команду /list-agents. См. обмен сообщениями между сеансами. Требует Claude Code v2.1.224 или позже и появляется только в сеансах, где обмен сообщениями между сеансами включен. Строки товарищей по команде и первая строка, показывающая имя этого сеанса, требуют v2.1.239 или позже |
No |
ListMcpResourcesTool |
Выводит список ресурсов, предоставляемых подключенными MCP серверами | No |
LSP |
Интеллект кода через языковые серверы: переход к определениям, поиск ссылок, отчеты об ошибках типов и предупреждениях. См. Поведение инструмента LSP | No |
Monitor |
Запускает команду в фоновом режиме и передает каждую строку вывода обратно Claude, чтобы он мог реагировать на записи журнала, изменения файлов или опрашиваемый статус в середине разговора. Может также открыть WebSocket и рассматривать каждое входящее сообщение как событие. См. Инструмент Monitor | Yes |
NotebookEdit |
Изменяет ячейки Jupyter notebook. См. Поведение инструмента NotebookEdit | Yes |
PowerShell |
Выполняет команды PowerShell нативно. См. Инструмент PowerShell для доступности | Yes |
PushNotification |
Отправляет уведомление на рабочий стол и push-уведомление на телефон, когда подключен Remote Control, чтобы долгоживущая задача или запланированная задача могла вас достичь, когда вы отойдете. Доставка push-уведомлений осуществляется через инфраструктуру, размещенную на Anthropic, которая недоступна из Amazon Bedrock, Claude Platform на AWS, Agent Platform Google Cloud или Microsoft Foundry | No |
Read |
Читает содержимое файлов. См. Поведение инструмента Read | No |
ReadMcpResourceTool |
Читает конкретный MCP ресурс по URI | No |
RemoteTrigger |
Создает, обновляет, запускает и выводит список Routines на claude.ai. Поддерживает команду /schedule. Справочник входных данных RemoteTrigger документирует каждое действие и политики организации, которые удаляют инструмент. Routines находятся на claude.ai и требуют план Pro, Max, Team или Enterprise, поэтому этот инструмент недоступен из Amazon Bedrock, Claude Platform на AWS, Agent Platform Google Cloud или Microsoft Foundry |
No |
ReportFindings |
Сообщает о результатах проверки кода как структурированный список с файлом, резюме и сценарием отказа для каждого результата, чтобы Claude Code мог их отобразить вместо вывода в виде текста. Claude вызывает его, когда активные инструкции проверки кода говорят ему это делать. Требует Claude Code v2.1.196 или позже. Начиная с v2.1.199, результат также может содержать необязательный слаг category, такой как correctness или test-coverage, показанный рядом с местоположением файла в отображаемом списке |
No |
ScheduleWakeup |
Переносит следующую итерацию самостоятельного /loop. Claude вызывает это в конце каждой итерации, чтобы выбрать, когда запустится следующая, между одной минутой и одним часом; вы не вызываете это напрямую. Чтобы вместо этого завершить цикл, Claude вызывает его с stop: true, что отменяет ожидающее пробуждение. Поле stop требует Claude Code v2.1.202 или позже. Ожидающее пробуждение появляется в session_crons в входных данных Stop hook |
No |
SendFeedback |
Составляет отчет об обратной связи о Claude Code, охватывающий проблему продукта или поведение Claude в сеансе, и ставит его в очередь на вашей машине для вашего просмотра. Claude Code ничего не отправляет, пока вы не выберете отправить черновик. См. Поведение инструмента SendFeedback. Требует Claude Code v2.1.238 или позже | No |
SendMessage |
Отправляет сообщение другому агенту: товарищу по команде команды агентов, подагенту, который он возобновляет по ID или имени агента, или одному из ваших других сеансов Claude Code, на этой машине или за ее пределами. Обмен сообщениями с другими сеансами требует Claude Code v2.1.224 или позже. Обмен сообщениями между сеансами охватывает, какие сеансы Claude может достичь, как выглядит сообщение, когда оно прибывает, и как Claude получает уведомление, когда другой сеанс переходит в режим ожидания. Claude может включить необязательный ввод summary, обычно 5-10 слов, который Claude Code показывает как однострочный предпросмотр. Когда Claude опускает его в простом текстовом сообщении, Claude Code использует первую строку сообщения как резюме. Claude Code обрезает резюме длиннее 200 символов с многоточием |
No |
SendUserFile |
Отправляет файлы из сеанса вам с необязательной подписью, чтобы созданный отчет, диаграмма, снимок экрана или встроенный артефакт достигли вашего устройства вместо того, чтобы только упоминаться в стенограмме. Начиная с v2.1.196, необязательный ввод display контролирует представление: render открывает файл встроенным в клиент, attach показывает только карточку загрузки, и когда не установлено, клиент решает по типу файла. Доступно, когда подключен клиент Remote Control или в облачном сеансе. Доставка осуществляется через инфраструктуру, размещенную на Anthropic, поэтому инструмент недоступен на Amazon Bedrock, Agent Platform Google Cloud или Microsoft Foundry |
No |
ShareOnboardingGuide |
Загружает ONBOARDING.md и возвращает ссылку для общего доступа, которую товарищи по команде могут открыть в Claude Code. Вызывается из /team-onboarding после написания руководства. Доступно подписчикам claude.ai в планах Pro, Max, Team и Enterprise |
Yes |
Skill |
Выполняет skill в основном разговоре | Yes |
SubagentHandback |
Доставляет финальный отчет подагента в разговор, который получает результат этого подагента. Предоставляется только в режиме auto, подагентам, которых запускает инструмент Agent локально, кроме форков, и доступно в терминальном CLI, расширениях IDE, облачных сеансах и Agent SDK; классификатор проверяет отчет перед его доставкой. Требует Claude Code v2.1.271 или позже | No |
TaskCreate |
Создает новую задачу в списке задач. Предоставляется по умолчанию только на моделях, перечисленных в Доступность инструмента Task, и на других моделях, когда вы согласитесь | No |
TaskGet |
Получает полные детали для конкретной задачи. Предоставляется по умолчанию только на моделях, перечисленных в Доступность инструмента Task, и на других моделях, когда вы согласитесь | No |
TaskList |
Выводит список всех задач с их текущим статусом. Предоставляется по умолчанию только на моделях, перечисленных в Доступность инструмента Task, и на других моделях, когда вы согласитесь | No |
TaskOutput |
Получает вывод из фоновой задачи. Устарело в пользу Read на пути выходного файла задачи. Когда ни одна задача не соответствует ID, ошибка выводит список работающих фоновых агентов по ID и описанию. До v2.1.203 ошибка называла только отсутствующий ID |
No |
TaskStop |
Останавливает работающую фоновую задачу по ID. Он также принимает товарища по команде команды агентов или именованного фонового агента по ID или имени агента. До v2.1.198 он принимал только ID фоновой задачи. Когда ни одна задача не соответствует ID, ошибка выводит список работающих фоновых агентов по ID и описанию, включая агентов, которых создал другой агент. До v2.1.203 ошибка выводила список работающих товарищей по команде и именованных агентов, но не фоновых агентов, которых создал другой агент, поэтому их нельзя было идентифицировать или остановить из основного разговора | No |
TaskUpdate |
Обновляет статус задачи, зависимости, детали или удаляет задачи. Предоставляется по умолчанию только на моделях, перечисленных в Доступность инструмента Task, и на других моделях, когда вы согласитесь | No |
TodoWrite |
Управляет контрольным списком задач сеанса. Отключено по умолчанию в пользу TaskCreate, TaskGet, TaskList и TaskUpdate. Установите CLAUDE_CODE_ENABLE_TASKS=0 для повторного включения в сеансах, которые имеют инструменты отслеживания задач |
No |
ToolSearch |
Ищет и загружает отложенные инструменты, когда поиск инструментов включен | No |
WaitForMcpServers |
Ожидает один или несколько MCP серверов, которые все еще подключаются в фоновом режиме, чтобы запрос мог использовать их инструменты без перезагрузки сеанса. Claude вызывает это, когда нужный сервер еще не подключен. Появляется только, когда поиск инструментов отключен, так как ToolSearch обрабатывает ожидание, когда он включен |
No |
WebFetch |
Получает содержимое с указанного URL. См. Поведение инструмента WebFetch | Yes |
WebSearch |
Выполняет веб-поиск. См. Поведение инструмента WebSearch | Yes |
Workflow |
Запускает динамический рабочий процесс: скрипт, который организует множество подагентов в фоновом режиме и возвращает один консолидированный результат | Yes |
Write |
Создает или перезаписывает файлы. См. Поведение инструмента Write | Yes |
Настройка инструментов с правилами разрешений и hooks
В большинстве случаев Claude решает, когда использовать эти инструменты, и вам не нужно называть их самостоятельно при взаимодействии с Claude. Вы ссылаетесь на имена инструментов напрямую при определении разрешений и другой конфигурации:
- в
permissions.allowиpermissions.denyв параметрах и интерфейсе/permissions - в флагах CLI
--allowedToolsи--disallowedTools - в опциях Agent SDK
allowedToolsиdisallowedTools - в frontmatter
allowed-toolsskill - в условии
ifhook
Все они принимают один и тот же формат правил: ToolName(specifier). Спецификатор зависит от инструмента, и несколько инструментов используют один формат:
| Формат правила | Применяется к | Детали |
|---|---|---|
Bash(npm run *) |
Bash, Monitor | Сопоставление шаблонов команд |
PowerShell(Get-ChildItem *) |
PowerShell | Сопоставление шаблонов команд |
Read(~/secrets/**) |
Read, Grep, Glob, LSP | Сопоставление шаблонов путей |
Edit(/src/**) |
Edit, Write, NotebookEdit | Сопоставление шаблонов путей |
Skill(deploy *) |
Skill | Сопоставление имён skill |
Agent(Explore) |
Agent | Сопоставление типа подагента |
WebFetch(domain:example.com) |
WebFetch | Сопоставление домена |
WebSearch |
WebSearch | Без спецификатора; разрешить или запретить инструмент в целом |
Инструменты, не указанные здесь, такие как ExitPlanMode или ShareOnboardingGuide, принимают только простое имя инструмента без спецификатора.
Правило разрешения Edit(...) также предоставляет доступ на чтение к тому же пути, поэтому вам не нужно соответствующее правило Read(...). Правило запрета Read(...) также блокирует инструменты Edit и Write на том же пути, включая создание нового файла там, потому что оба инструмента изменяют содержимое, которое Claude должен иметь возможность прочитать обратно. Проверка запрета Read требует Claude Code v2.1.208 или более поздней версии при редактировании, и v2.1.228 или более поздней версии при записи.
Поля matcher hook используют простые имена инструментов, а не формат в скобках. Смотрите шаблоны matcher для правил сопоставления. Для имён полей, которые каждый инструмент передаёт в tool_input в hooks, смотрите справочник входных данных PreToolUse.
Поведение инструмента Agent
Инструмент Agent запускает подагента в отдельном окне контекста. Подагент самостоятельно выполняет свою задачу, а затем возвращает один текстовый результат в родительский диалог. Родитель не видит промежуточные вызовы инструментов или выходные данные подагента, только этот финальный результат. Если включены команды агентов, вызов с параметром name может запустить товарища по команде, который отправляет отчет через сообщения команды, а не путем возврата результата.
Чтобы ограничить количество ходов, которые выполняет подагент, установите maxTurns в определении подагента. Когда подагент достигает лимита, Claude Code отмечает возвращаемый результат как частичный выход, и Claude может возобновить подагента для продолжения.
Тот же инструмент Agent также запускает разветвленные подагенты везде, где включен режим fork. Разветвление наследует полный родительский диалог вместо начала с нуля, работает в фоновом режиме, кроме случаев, которые остаются на переднем плане, и по-прежнему выводит запросы разрешений в вашем терминале. Остальная часть этого раздела описывает подагентов без разветвления.
Какие инструменты может использовать подагент без разветвления, зависит от полей tools и disallowedTools в определении подагента:
- Ни одно поле не установлено: подагент наследует каждый инструмент, доступный подагентам.
- Только
tools: подагент получает только перечисленные инструменты. - Только
disallowedTools: подагент получает каждый инструмент родителя, кроме перечисленных. - Оба установлены:
disallowedToolsимеет приоритет. Инструмент, указанный в обоих, удаляется.
В каждом случае разрешенный набор ограничен инструментами, доступными подагентам: инструмент, который недоступен подагентам, никогда не предоставляется, даже если указан в tools. Где условия в записи таблицы инструментов SubagentHandback выполняются, Claude Code также предоставляет подагенту этот инструмент, даже если вы его опустите в tools или указали в disallowedTools.
Если каждая запись в списке tools подагента не соответствует используемому инструменту, инструмент Agent обычно возвращает ошибку с названием записей вместо запуска подагента; см. Agent would be spawned with zero tools для сообщения и способов исправления каждой записи.
Запуск подагента сам по себе не запрашивает разрешение. Claude Code проверяет вызовы инструментов подагента в соответствии с вашими правилами разрешений по мере его работы.
Где вы видите запросы разрешений подагента, зависит от того, работает ли он на переднем плане или в фоновом режиме. Claude Code запускает подагентов в фоновом режиме по умолчанию, кроме случаев, которые работают на переднем плане.
- Подагенты на переднем плане показывают те же запросы разрешений, которые вы видели бы в основном диалоге, в момент каждого вызова инструмента.
- Подагенты в фоновом режиме выводят запросы разрешений в вашу основную сессию начиная с версии 2.1.186. Запрос указывает, какой подагент запрашивает, и нажатие Esc отклоняет этот вызов инструмента без остановки подагента. До версии 2.1.186 подагенты в фоновом режиме автоматически отклоняли любой вызов инструмента, который иначе запросил бы разрешение, и продолжали работу без этого инструмента.
Чтобы ограничить то, что может достичь подагент с самого начала, сузьте его поле tools, например исключив Bash из списка, или установите правила отказа в ваших настройках.
Поведение инструмента AskUserQuestion
Claude использует AskUserQuestion для задания вам вопросов с несколькими вариантами ответов, когда ему требуется решение или уточнение. Ответьте, выбрав вариант, или введите свой текст через строку Other или поле примечаний.
Когда вы отвечаете, вводя свой собственный текст, Claude Code передает ответ нейтральной формулировкой, чтобы Claude следовал тому, что вы написали, включая запрос подождать или сначала объяснить.
Тайм-аут автоматического продолжения вопроса
Вопросы остаются открытыми до тех пор, пока вы на них не ответите. Если вы хотите, чтобы оставленный без ответа вопрос в конечном итоге закрылся и позволил Claude продолжить без вас, установите параметр askUserQuestionTimeout на 60s, 5m или 10m либо в вашем пользовательском файле settings.json, либо из строки Question auto-continue timeout в /config.
После того как вопрос остается без ввода в течение этого времени, диалог закрывается автоматически: он отправляет все уже выбранные вами варианты и сообщает Claude, что вы можете быть отвлечены от клавиатуры, поэтому Claude действует по собственному усмотрению и может переспросить позже. Вы видите обратный отсчет в течение последних 20 секунд. Нажмите любую клавишу, чтобы перезагрузить таймер; на терминалах, которые сообщают о фокусе, переключение на окно также перезагружает его.
Тайм-аут применяется только к вопросам с несколькими вариантами ответов AskUserQuestion; запросы разрешений, включая одобрение плана, никогда не разрешаются автоматически при неактивности.
Поведение инструмента Bash
Инструмент Bash запускает каждую команду в отдельном процессе.
Что сохраняется между командами
- Когда Claude запускает
cdв основной сессии, новый рабочий каталог переносится на последующие команды Bash, пока он остаётся внутри каталога проекта или дополнительного рабочего каталога, который вы добавили с помощью--add-dir,/add-dirилиadditionalDirectoriesв параметрах. Это включает команды, которые Claude запускает в ответ на ваши последующие сообщения.- Сессии подагентов никогда не переносят изменения рабочего каталога.
- Если
cdприводит за пределы этих каталогов, Claude Code сбрасывает на каталог проекта и добавляетShell cwd was reset to <dir>к результату инструмента. - Чтобы отключить этот перенос, чтобы каждая команда Bash начиналась в каталоге проекта, установите
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1.
- Переменные окружения не сохраняются.
exportв одной команде не будет доступен в следующей. - Псевдонимы и функции оболочки, определённые в файле запуска оболочки, доступны. При запуске сессии Claude Code загружает
~/.zshrc,~/.bashrcили~/.profileв зависимости от вашей оболочки, захватывает полученные псевдонимы, функции и параметры оболочки и применяет их к каждой команде Bash.
Активируйте виртуальное окружение или окружение conda перед запуском Claude Code. Чтобы переменные окружения сохранялись между командами Bash, установите CLAUDE_ENV_FILE на скрипт оболочки перед запуском Claude Code или используйте hook SessionStart для его динамического заполнения.
Ограничения по времени ожидания и выводу
Каждая команда выполняется с ограничением по времени, и Claude управляет им: когда ему требуется больше времени, чем по умолчанию для команды, он передаёт параметр timeout с этим вызовом — вы никогда не устанавливаете ограничение по времени для отдельной команды. Две переменные окружения ограничивают то, что получает Claude:
BASH_DEFAULT_TIMEOUT_MS— значение по умолчанию, когда Claude не передаёт ограничение по времени; две минуты из коробкиBASH_MAX_TIMEOUT_MS— с значением по умолчанию устанавливает потолок, который ограничивает всё, что запрашивает Claude: эффективный потолок — это больший из двух, десять минут из коробки
Ограничения по выводу
Claude Code передаёт вывод команды в рабочий файл по мере выполнения команды; команда, выход которой превышает 5 ГБ, прерывается. Когда команда завершается, Claude Code читает вывод обратно из этого файла, вплоть до окна чтения, описанного ниже. Сколько вывода достигает Claude встроенным образом, зависит от того, рассматривает ли Claude Code результат как ошибку:
| Результат | Что получает Claude |
|---|---|
| Действительный | Встроенный до примерно 30 000 символов по умолчанию; сверх этого, путь файла, сохранённого в каталог сессии и усечённого сверх 64 МиБ, плюс краткий предпросмотр с начала, и Claude читает или ищет файл, когда ему нужен остаток |
| Ошибка | Встроенный до примерно 10 000 символов; сверх этого, выдержка начала и конца этого размера, вырезанная из окна чтения, без пути файла |
Команда, которая выходит с кодом 1, считается действительным результатом для инструмента Bash только когда Claude Code распознаёт код выхода 1 как благоприятный результат для этой команды: grep, rg, egrep, fgrep, find, diff, test и [, плюс git diff и git grep. Каждая другая команда, которая выходит с кодом 1, считается ошибкой, даже когда код выхода 1 — это благоприятный информационный результат: нет совпадений для pgrep и jq -e, файлы, которые отличаются для cmp.
BASH_MAX_OUTPUT_LENGTH устанавливает, сколько символов вывода Claude Code читает обратно из рабочего файла в результат команды: 30 000 по умолчанию, вплоть до жёсткого потолка в 150 000. Увеличьте его, когда ваши команды регулярно переполняют это окно, например, подробная сборка или полный журнал набора тестов. Увеличение его расширяет окно чтения, которое также является окном, из которого вырезается выдержка команды с ошибкой. Оно не повышает встроенные потолки: действительный результат сверх встроенного потолка поступает как путь файла плюс предпросмотр независимо от этой переменной.
Чтобы изменить, сколько действительного результата Claude получает встроенным образом, установите параметр bashOutputMaxChars вместо этого, вплоть до 128 000 символов. Он определяет встроенный потолок и окно чтения вместе, и Claude Code затем игнорирует BASH_MAX_OUTPUT_LENGTH. Требуется Claude Code v2.1.261 или позже.
Фоновые команды
Для долгоживущих процессов, таких как серверы разработки или сборки с отслеживанием, Claude может установить run_in_background: true для запуска команды как фоновой задачи и продолжения работы во время её выполнения. Перечислите и остановите фоновые задачи с помощью /tasks. После того как вы остановите одну там или из подключённого клиента, такого как настольное приложение, Claude переходит дальше вместо ожидания. Если подагент запустил команду, это подагент, который переходит дальше.
Команда, которую запустил подагент переднего плана, останавливается, когда этот подагент даёт свой окончательный ответ. Команда, которую запустила основная беседа или фоновый подагент, продолжает работать после окончательного ответа. В неинтерактивном режиме с флагом -p фоновые команды заканчиваются вскоре после окончательного результата запуска.
Когда команда достигает своего ограничения по времени без завершения, Claude Code перемещает её в фон вместо остановки, если только команда не начинается с sleep. Claude продолжает работать, пока команда продолжает выполняться. Claude Code применяет те же правила жизненного цикла к перемещённой команде, как и к любой другой фоновой команде, поэтому она всё ещё заканчивает команду подагента переднего плана при окончательном ответе этого подагента. Установка CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 отключает автоматическое перемещение в фон вместе с остальной функциональностью фоновых задач.
Результат команды, перемещённой в фон, указывает, что произошло:
- Когда ограничение по времени запускает перемещение, результат сообщает об этом явно:
Command did not complete within its 120s timeout and was moved to the background, с секундами, соответствующими применённому ограничению по времени, за которым следует ID задачи и путь файла, в который записывается вывод. cd,pushd,popdилиchdirвнутри команды, которая перемещается в фон, никогда не переносятся: результат указываетSession cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands., поэтому Claude не действует на изменение каталога, которое не произошло.
Ограничение памяти на Linux и WSL
На Linux и WSL установите CLAUDE_CODE_TOOL_MEMORY_LIMIT на размер, такой как 4G, чтобы ограничить память, которую могут использовать команды Bash, PowerShell и инструмента Monitor, чтобы одна неконтролируемая сборка не отняла память, которая нужна остальной сессии. Требуется Claude Code v2.1.233 или позже. До v2.1.246 команды инструмента Monitor выполнялись вне ограничения.
- Напишите размер как количество байтов или с суффиксом
K,M,GилиT. Установите0,off,false,noилиnone, чтобы отключить ограничение. Claude Code игнорирует любое другое значение, которое он не может прочитать как размер, например4e9. - Claude Code считает все команды Bash, PowerShell и Monitor сессии в одно ограничение, а не каждую команду отдельно.
- Claude Code применяет ограничение с помощью cgroup памяти. Когда он не может установить cgroup, команды выполняются без ограничения, и журнал отладки из
claude --debugуказывает почему. - После того как первый процесс, который Claude Code запустил, включил ограничение или отключил его из-за значения off или неудачной установки cgroup, Claude Code удерживает этот результат до перезапуска. Чтобы применить изменённое или удалённое значение или исправленную установку, запустите
claudeснова. - Когда команды не могут оставаться в пределах ограничения, ядро убивает команду, и ничто в её результате не называет ограничение.
Claude Code также может считать другие виды процессов, которые он запускает, в одно и то же ограничение. Установите CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE на список, разделённый запятыми, видов, которые нужно исключить из ограничения; Claude Code применяет ограничение к каждому виду, который не в вашем списке. Установите его на none, чтобы ограничить каждый вид, или на all-new, чтобы ограничить только команды Bash, PowerShell и Monitor tool. Требуется Claude Code v2.1.246 или позже. Виды, которые вы можете назвать:
mcp: локальные серверы MCPlsp: языковые серверыhooks: команды hookplugin: команды, которые запускают плагиныhelper: собственные вспомогательные команды Claude Code, такие какgitagent: дочерние процессы Claude Code, такие как товарищи агентов
Что бы вы ни указали, применяются эти правила:
- Неизвестные имена: Claude Code игнорирует имена, которые он не распознаёт
- Bash, PowerShell и Monitor: Claude Code держит команды Bash, PowerShell и Monitor tool под ограничением, что бы вы ни указали
- Переменная не установлена: Claude Code берёт набор других ограниченных видов из конфигурации, которую Anthropic доставляет с сервера, и этот набор может меняться со временем, поэтому установите переменную, когда вам нужен набор, который не меняется
- Hooks с контролем разрешений: даже со всеми видами под ограничением, Claude Code исключает из ограничения hook, который может заблокировать или изменить результат действия, и любой сервер MCP, который такой hook вызывает, поэтому ядро, убивающее hook с контролем разрешений, не может разрешить действие, которое он блокировал
Поведение инструмента Edit
Инструмент Edit выполняет точную замену строк. Он принимает old_string и new_string и заменяет первую на вторую. Он не использует регулярные выражения или нечеткое совпадение.
Для применения редактирования должны пройти три проверки. Перед любой из них путь, соответствующий правилу отказа Read, отклоняется, включая создание нового файла там. Отказ требует Claude Code v2.1.208 или позже.
- Read-before-edit: Claude читает файл в текущем разговоре перед его редактированием, и чтение, прерванное уведомлением
PARTIAL view, не учитывается. Claude Opus 4.6, Claude Haiku 4.5 и более старые модели всегда требуют чтения. Более новые модели могут редактировать непрочитанный файл при чтении, когда чтение не требует запроса разрешения и инструмент Read доступен. - Match:
old_stringдолжна появиться в файле ровно так, как написано. Даже одного символа пробела или различия в отступе достаточно, чтобы не совпасть. - Uniqueness:
old_stringдолжна появиться ровно один раз. Когда она появляется более одного раза, Claude либо предоставляет более длинную строку с достаточным окружающим контекстом, чтобы определить одно вхождение, либо устанавливаетreplace_all: trueдля замены всех вхождений.
Файл, который изменился на диске после последнего чтения Claude, все еще может быть отредактирован, когда old_string точно совпадает с текущим содержимым однозначно и Claude Code может прочитать файл без запроса. Сопоставление с текущим содержимым файла обеспечивает безопасность, и результат отмечает, что файл содержит другие изменения, поэтому Claude перечитывает его перед редактированиями, которые зависят от окружающего содержимого. В любом другом случае, например при устаревшей old_string или той, которая совпадает более одного раза без replace_all, Claude читает файл снова перед редактированием. Расслабленная обработка непрочитанных и измененных файлов требует Claude Code v2.1.208 или позже; до этого Claude Code отказывал в любом редактировании файла, который он не читал в разговоре или который изменился на диске после чтения.
Просмотр файла с помощью Bash также удовлетворяет требованию read-before-edit, когда команда — это cat, nl, bat, batcat, head, tail, sed -n 'X,Yp', grep, egrep, fgrep или rg на одном файле без конвейеров или перенаправлений. Выходные данные конвейера и другие команды Bash не учитываются при проверке read-before-edit.
Просмотр файла с помощью Bash влияет только на право редактирования, а не на разрешения. См. Правила разрешений Read и Edit для информации о том, какие команды Bash охватывают ваши правила отказа Read и Edit.
Поведение инструмента EndConversation
Инструмент EndConversation завершает текущую сессию. Claude использует его только в двух ситуациях:
- как последнее средство против постоянного оскорбительного ввода, после попыток переориентировать разговор и после четкого предупреждения в предыдущем сообщении
- когда вы явно просите продемонстрировать инструмент и подтверждаете, что хотите завершить сессию
Общее разочарование, ругательства или неудачное выполнение задачи не подходят, как и запросы вредоносного контента, которые Claude отклоняет вместо завершения сессии. Claude Code следует тому же подходу, что и claude.ai, который может завершить редкое подмножество чатов.
После завершения Claude интерактивной сессии сессия блокируется. Новые запросы и большинство команд возвращают Claude ended this conversation. Start a new session (or /clear) to continue., и только /clear, /resume, /help, /exit и /feedback продолжают работать. Claude Code записывает завершение в стенограмму сессии, поэтому возобновление завершенной сессии восстанавливает блокировку; история сессии не удаляется.
Возобновление завершенной сессии в неинтерактивном режиме с флагом -p вызывает ошибку и выходит с кодом 1, поэтому скрипт не читает завершенный запуск как успех.
Инструмент никогда не запрашивает разрешение, и PreToolUse hooks не запускаются для него. Пока остается любой другой инструмент, вы не можете его заблокировать: правила отказа и запроса, называющие EndConversation, не имеют эффекта, и ни --disallowedTools, ни список --tools не могут его удалить. Исключение преднамеренно: инструмент ничего не делает, кроме завершения разговора, никогда не читая и не изменяя файлы или данные, и такая защита работает только если сессия, к которой она применяется, не может ее отключить. Когда ваши правила отказа удаляют все остальные инструменты и также совпадают с EndConversation, как это делает "*", Claude Code удаляет его также, а не оставляет его единственным инструментом, если правило разрешения явно не называет EndConversation. Список отказов, который удаляет все остальные инструменты без совпадения с EndConversation, оставляет его на месте.
Подагенты никогда не получают инструмент. Фоновые задачи, которые совместно используют список инструментов основного разговора, видят его, но вызов его там ничего не завершает.
Инструмент появляется только когда выполняются все следующие условия:
- Версия: Claude Code v2.1.213 или позже.
- Модель: модель сессии — Claude Opus 4.8, Claude Sonnet 5, Claude Fable 5 или более поздняя версия одного из этих семейств.
- Поверхность: интерактивная сессия терминала, включая сессию
claudeв интегрированном терминале IDE, что является тем, как плагин JetBrains его запускает. Другие поверхности не включают инструмент, такие как:- неинтерактивные запуски
-p - сессии через пакеты TypeScript и Python Agent SDK
- панель VS Code extension, которая поставляется с собственным CLI
- GitHub Actions
- облачные сессии
- неинтерактивные запуски
- Режим запуска: не сессия
--bare. Режим bare загружает только инструменты shell и файлов, поэтому инструмент никогда там не регистрируется. - Поставщик: недоступно на Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform или Microsoft Foundry, или на сессиях, вошедших через облачный шлюз.
Поведение инструмента Glob
Инструмент Glob находит файлы по шаблону имени. На Windows он входит в набор инструментов по умолчанию. На macOS, Linux и WSL Claude Code исключает Glob и Grep из набора инструментов по умолчанию, и Claude выполняет поиск с помощью find и grep через инструмент Bash. В оболочке Claude эти две команды запускают встроенные версии bfs и ugrep, и поиск достигает ваших hooks и правил разрешений как вызовы Bash.
На macOS, Linux и WSL вы получаете инструменты Glob и Grep обратно в этих случаях:
- Вы указываете
GlobилиGrepв--toolsили--allowedToolsпри запуске сеанса или в эквивалентных параметрах Agent SDK. С--toolsвы получаете те, которые указали, а указание любого инструмента в--allowedToolsвосстанавливает оба. Правило разрешения в файле параметров не имеет этого эффекта. - Правило разрешений deny, флаг
--disallowedToolsили--restrictedудаляетBashиз сеанса. - Подагент указывает
GlobилиGrepв своем полеtoolsи исключаетBash. Указанные инструменты возвращаются только для этого подагента или для всего сеанса, когда он запускается как основной агент сеанса через--agentили параметрagent.
Glob поддерживает стандартный синтаксис glob, включая ** для рекурсивного сопоставления каталогов:
**/*.jsсоответствует всем файлам.jsна любой глубинеsrc/**/*.tsсоответствует всем файлам.tsв каталогеsrc/*.{json,yaml}соответствует файлам.jsonи.yamlв текущем каталоге
Результаты сортируются по времени изменения и ограничены 100 файлами. Если лимит достигнут, Claude видит флаг усечения в результате и может уточнить шаблон.
Glob не учитывает .gitignore по умолчанию, поэтому он находит файлы, игнорируемые git, наряду с отслеживаемыми. Это отличается от Grep, который пропускает файлы, игнорируемые git. Чтобы заставить Glob учитывать .gitignore, установите CLAUDE_CODE_GLOB_NO_IGNORE=false перед запуском Claude Code.
Claude Code определяет разрешение для вызова Glob перед проверкой существования каталога поиска. Он по-прежнему выполняет проверку разрешения на чтение для отсутствующего path вне рабочих каталогов, поэтому запрос разрешения для пути не означает, что путь существует.
Значение pattern или path, содержащее нулевой байт, возвращает ошибку с просьбой к Claude удалить его.
Поведение инструмента Grep
Инструмент Grep выполняет поиск в содержимом файлов по шаблонам. Если Glob находит файлы по имени, то Grep находит строки внутри них. На macOS, Linux и WSL инструмент Grep отсутствует по умолчанию при тех же условиях, что и Glob. Информацию о том, когда оба инструмента доступны, см. в разделе Поведение инструмента Glob.
Grep построен на основе ripgrep и использует синтаксис регулярных выражений ripgrep, а не POSIX grep. Шаблоны, содержащие метасимволы регулярных выражений, требуют экранирования. Например, поиск interface{} в коде Go требует шаблона interface\{\}.
Шаблон, glob или тип файла, который ripgrep отклоняет, возвращает ошибку, которая включает диагностику ripgrep, чтобы Claude мог исправить входные данные и выполнить поиск снова. До версии 2.1.208 Claude Code сообщал об отклоненном входе как No files found вместо ошибки, даже если искомый текст существовал в целевых файлах.
Три режима вывода контролируют, что возвращается:
files_with_matches: только пути файлов, без содержимого строк. Это режим по умолчанию.content: совпадающие строки с файлом и номером строки. Когда параметрoffsetинструмента указывает за последнее совпадение для шаблона, который имеет совпадения, Grep возвращаетNo entries at this offset, поэтому Claude расширяет или сбрасывает смещение вместо того, чтобы заключить, что шаблон не совпадает.count: количество совпадений на файл, за которым следует итого по всем совпадающим файлам. Итого охватывает каждое совпадение, даже когда параметрыhead_limitилиoffsetинструмента усекают перечисленные записи для каждого файла. До версии 2.1.208 итого суммировало только перечисленные записи.
Claude может ограничить результаты по файлу с помощью параметра glob, такого как **/*.tsx, или по языку с помощью параметра type, такого как py или rust. По умолчанию шаблоны совпадают в пределах одной строки. Claude может установить multiline: true для совпадения через границы строк.
Grep соблюдает .gitignore, поэтому файлы, игнорируемые git, пропускаются. Для поиска в файле, игнорируемом git, Claude передает его путь напрямую.
Claude Code определяет разрешение для вызова Grep перед проверкой того, существует ли путь поиска path. Он по-прежнему выполняет проверку разрешения на чтение для отсутствующего path вне рабочих каталогов, поэтому запрос разрешения для пути не означает, что путь существует.
Поведение инструмента LSP
Инструмент LSP предоставляет Claude анализ кода от работающего языкового сервера. После каждого редактирования файла он автоматически сообщает об ошибках типов и предупреждениях, чтобы Claude мог исправить проблемы без отдельного этапа сборки. Claude также может вызвать его напрямую для навигации по коду:
- Перейти к определению символа
- Найти все ссылки на символ
- Получить информацию о типе в позиции
- Список символов в файле
- Поиск символа по имени во всём рабочем пространстве
- Найти реализации интерфейса
- Отследить иерархии вызовов
Claude Code держит инструмент неактивным до тех пор, пока вы не установите плагин анализа кода для вашего языка. В облачных сеансах Claude Code не запускает языковые серверы плагинов, поэтому инструмент LSP остаётся неактивным там. Claude Code берёт конфигурацию языкового сервера из плагина, и вы устанавливаете двоичный файл сервера самостоятельно.
Claude Code возвращает результат ошибки для каждого вызова LSP в файле, языковой сервер которого он не может запустить.
Инструмент Monitor
Инструмент Monitor позволяет Claude наблюдать за чем-либо в фоновом режиме и реагировать при изменении, не прерывая разговор. Попросите Claude:
- Отслеживать файл журнала и отмечать ошибки по мере их появления
- Опрашивать PR или задачу CI и сообщать об изменении статуса
- Наблюдать за каталогом на предмет изменений файлов
- Отслеживать вывод любого долгоживущего скрипта, на который вы его направите
- Подключиться к потоку WebSocket и сообщать каждое сообщение по мере его поступления
Для большинства наблюдений Claude пишет небольшой скрипт, запускает его в фоновом режиме и получает каждую строку вывода по мере её поступления. Для сервера, который уже отправляет события, Claude может открыть WebSocket вместо запуска скрипта.
Вы продолжаете работать в одном сеансе, а Claude вмешивается при поступлении события.
Каждое наблюдение, которое запускает Claude, имеет крайний срок: 5 минут по умолчанию, максимум 30 минут и максимум 10 минут в неинтерактивном запуске с одним приглашением с флагом -p.
По истечении крайнего срока наблюдение завершается. Claude получает одно уведомление, поэтому оно может снова запустить наблюдение, если оно всё ещё необходимо.
Остановите монитор, попросив Claude отменить его или завершив сеанс. Когда вы останавливаете подагента, который запустил мониторы, например из /tasks, эти мониторы останавливаются вместе с ним.
Когда Monitor запускает команду, он использует те же правила разрешений, что и Bash, поэтому шаблоны allow и deny, которые вы установили для Bash, применяются и здесь. Пока режим auto активен, Claude Code откладывает правила разрешений, которые называют сам Monitor, наряду с другими широкими правилами разрешений, которые он отбрасывает, поэтому классификатор проверяет команды Monitor так же, как он проверяет команды Bash.
Источник WebSocket имеет собственное приглашение на одобрение, которое классификатор также решает в режиме auto.
Инструмент недоступен на Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry. Он также недоступен, когда установлены DISABLE_TELEMETRY или CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC.
Плагины могут объявлять мониторы, которые запускаются автоматически при активации плагина, вместо того чтобы просить Claude запустить их. См. мониторы плагинов.
WebSocket source
Источник WebSocket требует Claude Code v2.1.195 или более поздней версии.
Когда сервер уже отправляет события через WebSocket, Claude может подключиться к нему напрямую вместо написания скрипта опроса. Каждый вид активности сокета либо становится событием, либо завершает наблюдение:
- Текстовые сообщения: каждое становится одним событием, даже если сообщение занимает несколько строк.
- Двоичные сообщения: не передаются. Claude получает строку-заполнитель, такую как
[binary frame, 512 bytes]. - Сообщения размером более 1 МиБ: наблюдение завершается, поэтому подпишитесь на отфильтрованный поток, если он существует.
- Закрытие сокета: наблюдение завершается и Claude получает код закрытия.
Наблюдение WebSocket принимает входные данные ws вместо command, и один вызов Monitor не может объединять оба. Входные данные ws имеют два поля:
| Поле | Обязательно | Описание |
|---|---|---|
url |
Да | Конечная точка для подключения. Должна быть URL ws:// или wss:// без встроенных учётных данных или пробелов, используя только символы ASCII |
protocols |
Нет | Имена подпротоколов WebSocket для предложения во время рукопожатия. Каждая запись должна быть действительным токеном подпротокола, и список не может содержать дубликаты |
Крайний срок timeout_ms применяется и к наблюдению WebSocket: наблюдение завершается в крайний срок, и TaskStop отменяет его раньше.
Открытие WebSocket запрашивает одобрение; в режиме auto классификатор решает вместо этого. Приглашение не предлагает опцию пропустить будущие приглашения для одного хоста.
Claude Code отклоняет URL-адреса, указывающие на приватный, link-local или адрес облачных метаданных, включая имена хостов, которые разрешаются в один. Он также отклоняет хосты в sandbox.network.deniedDomains, и когда allowManagedDomainsOnly установлен в управляемых параметрах, любой хост вне управляемого списка разрешений.
Поведение инструмента NotebookEdit
NotebookEdit изменяет Jupyter notebook по одной ячейке за раз, нацеливаясь на ячейки по их cell_id. Он не выполняет замену строк по всему notebook так, как Edit делает на простых файлах.
Три режима редактирования контролируют, что происходит с целевой ячейкой:
replace: перезаписать источник ячейки. Это значение по умолчанию.insert: добавить новую ячейку после целевой. Безcell_idновая ячейка переходит в начало notebook. Требует установкиcell_typeнаcodeилиmarkdown.delete: удалить целевую ячейку.
Правила разрешений используют формат пути Edit(...). Правило, такое как Edit(notebooks/**), охватывает вызовы NotebookEdit на файлы в этом каталоге.
Инструмент PowerShell
Инструмент PowerShell позволяет Claude выполнять команды PowerShell в собственном режиме. В Windows это означает, что команды выполняются в PowerShell вместо маршрутизации через Git Bash. Доступность инструмента зависит от вашей платформы:
- Windows без Git Bash: инструмент включен автоматически.
- Windows с установленным Git Bash: инструмент включен по умолчанию для учетных записей claude.ai и Console; установите
CLAUDE_CODE_USE_POWERSHELL_TOOL=1для включения в сеансах Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry, или0для отключения. - Linux, macOS и WSL: инструмент является дополнительным.
Ваши PreToolUse hooks получают строку команды инструмента в tool_input.command с теми же полями, что и инструмент Bash.
Сопоставьте Bash|PowerShell в hooks, которые проверяют команды оболочки; раздел PowerShell hook input объясняет, почему сопоставления только Bash недостаточно.
Включение инструмента PowerShell
Установите CLAUDE_CODE_USE_POWERSHELL_TOOL=1 в вашей среде или в settings.json:
{
"env": {
"CLAUDE_CODE_USE_POWERSHELL_TOOL": "1"
}
}
В Windows установите переменную на 0 для отключения инструмента. В Linux, macOS и WSL инструмент требует PowerShell 7 или более поздней версии: установите pwsh и убедитесь, что он находится в вашем PATH.
В Windows Claude Code автоматически обнаруживает pwsh.exe для PowerShell 7+ с резервным вариантом powershell.exe для PowerShell 5.1. Когда инструмент включен, Claude рассматривает PowerShell как основную оболочку. Инструмент Bash остается доступным для POSIX-скриптов при установленном Git Bash.
Claude Code запускает PowerShell с -ExecutionPolicy Bypass только в области процесса, поэтому скрипты .ps1 и импорт модулей работают на установках Windows по умолчанию без изменения политики машины. Обход области процесса не переопределяет Group Policy MachinePolicy или UserPolicy, поэтому политики предприятия по-прежнему применяются. Чтобы вместо этого соблюдать эффективную политику выполнения машины, установите CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1.
Выбор оболочки в параметрах, hooks и skills
Три дополнительных параметра контролируют, где используется PowerShell:
"defaultShell": "powershell"вsettings.json: маршрутизирует интерактивные команды!через PowerShell. Требует включения инструмента PowerShell."shell": "powershell"на отдельных command hooks: запускает этот hook в PowerShell. Hooks запускают PowerShell напрямую, поэтому это работает независимо отCLAUDE_CODE_USE_POWERSHELL_TOOL.shell: powershellв skill frontmatter: запускает блоки!`command`в PowerShell. Требует включения инструмента PowerShell.
То же поведение сброса рабочего каталога основного сеанса, описанное в разделе инструмента Bash, применяется к командам PowerShell, включая переменную среды CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR.
Начиная с v2.1.196, код выхода 1 из grep, rg, egrep, fgrep, findstr и git grep означает отсутствие совпадений. Код выхода 1 из git diff означает наличие различий. Ни один из этих результатов не сообщается Claude как ошибка команды. Для robocopy коды выхода от 0 до 7 являются информационными результатами, такими как скопированные файлы или обнаруженные дополнительные файлы. Коды выхода 8 или выше считаются ошибками.
Кодировка Windows и коды выхода
В Windows следующие поведения кодировки PowerShell и кодов выхода требуют Claude Code v2.1.214 или более поздней версии:
- Перенаправление с
>и>>записывает файлы UTF-8 в PowerShell 5.1 - Claude Code кодирует текст, переданный в стандартный ввод собственной команды, как UTF-8
- Claude Code захватывает вывод ошибок без последовательностей экранирования ANSI
- Команда, дочерний процесс которой ожидает стандартного ввода, получает конец файла вместо зависания
- Код выхода 1 из
where.exeозначает отсутствие совпадения, а изfc.exeиdiff.exeозначает, что файлы отличаются, поэтому когда команда выдает вывод, Claude Code рассматривает этот код выхода как действительный отрицательный ответ, а не ошибку команды. Claude Code по-прежнему сообщает о подавленной форме, такой какwhere.exe /Qили перенаправление в$null, как об ошибке при коде выхода 1
До v2.1.214 > в PowerShell 5.1 записывал файлы UTF-16LE, не-ASCII входные данные, переданные по конвейеру, поступали как ?, и скрипты Python могли аварийно завершиться с UnicodeEncodeError при выводе символов не-ASCII.
Ограничения предварительного просмотра
Инструмент PowerShell имеет следующие известные ограничения во время предварительного просмотра:
- Профили PowerShell не загружаются
- В Windows sandboxing не поддерживается
Поведение инструмента Read
Инструмент Read принимает путь к файлу и возвращает его содержимое с номерами строк. Claude инструктирован всегда передавать абсолютные пути.
По умолчанию Read возвращает файл с начала. Когда чтение всего файла превышает лимит токенов, Read возвращает первую страницу с уведомлением PARTIAL view, которое сообщает Claude, сколько файла он получил и как прочитать больше с помощью offset и limit. Чтение, которое передает явный offset или limit и все еще превышает лимит токенов, возвращает ошибку.
Чтение с явным limit останавливается, как только выбранные строки превышают то, что лимит токенов когда-либо мог бы вместить, и возвращает ошибку без загрузки остальной части диапазона. Ошибка сообщает Claude использовать меньший limit или искать конкретное содержимое с помощью Grep вместо этого, когда одна строка такая большая. До версии 2.1.208 Claude Code загружал весь диапазон в память перед его отклонением, поэтому чтение файла с чрезвычайно длинной одной строкой могло привести к нехватке памяти.
Чтение пустого файла возвращает уведомление о том, что файл существует, но его содержимое пусто, а offset за последней строкой возвращает уведомление, дающее количество строк файла. До версии 2.1.208 чтение пустого файла возвращало уведомление о конце вместо этого.
Read обрабатывает несколько типов файлов помимо простого текста:
- Изображения: PNG, JPG и другие форматы изображений возвращаются как визуальное содержимое, которое Claude может видеть, а не как необработанные байты. Claude Code изменяет размер и переупаковывает большие изображения, чтобы они соответствовали ограничениям размера изображения модели перед отправкой, поэтому Claude может видеть уменьшенную версию большого снимка экрана. Начиная с версии 2.1.196, изображение, которое все еще больше 500 КБ после этого изменения размера, переупаковывается как JPEG с пониженным качеством с неизменными размерами пикселей. Если Claude пропустит мелкие детали на уровне пикселей в большом изображении, попросите его сначала обрезать интересующий регион, например с помощью ImageMagick через Bash.
- PDF-файлы: Claude читает короткие файлы
.pdfцеликом. Для PDF-файлов длиннее 10 страниц он читает диапазоны с параметромpages, таким как"1-5", до 20 страниц за раз. - Jupyter notebooks: файлы
.ipynbвозвращают все ячейки с их выводом, включая код, markdown и визуализации. Claude Code отказывается читать файл notebook размером более 100 МБ; ошибка сообщает Claude, как прочитать часть notebook вместо этого, например срез ячеек, с помощью команды shell.
Read читает только файлы, а не директории. Claude выводит содержимое директории с помощью команды shell, такой как ls.
Поведение инструмента SendFeedback
Отзыв, написанный Claude, — это отчет об обратной связи о Claude Code, который Claude пишет для вас. Для этого требуется Claude Code версии 2.1.238 или более поздней. Claude Code сохраняет каждый черновик на вашем компьютере в папке ~/.claude/feedback/drafts/, и ничего не попадает в Anthropic до тех пор, пока вы его не отправите. Claude создает черновик с помощью инструмента SendFeedback в следующих случаях:
- Инструмент или команда продолжает давать сбой
- Он не может помочь с тем, что вы просили
- Вы указываете на ошибку, которую он допустил, или он сам ее замечает
- Вы просите его отправить отзыв
Что вы видите, когда Claude создает черновик
После того как Claude ставит черновик в очередь, над вашей подсказкой появляется карточка с названием черновика. Нажмите 1, чтобы просмотреть черновик, нажмите 2 дважды, чтобы отправить его как есть, или нажмите 0, чтобы отклонить его. Отклоненный черновик остается в вашей очереди. После того как вы отклоните карточку, Claude Code спросит, хотите ли вы отключить функцию отзывов, написанных Claude. Он перестанет спрашивать после того, как вы дважды откажетесь.
По умолчанию в сеансе отображается не более трех карточек; Anthropic может изменить это ограничение с сервера без выпуска новой версии. После достижения лимита и всякий раз, когда вы устанавливаете feedbackDrafts на quiet, вы видите только количество черновиков в очереди в нижнем колонтитуле подсказки.
Просмотр и редактирование черновика
Запустите /feedback без аргументов, чтобы открыть вашу очередь. Она содержит список всех черновиков в очереди из всех ваших сеансов, включая черновики, карточки которых вы отклонили или никогда не видели. Выберите черновик, чтобы открыть его для просмотра, где вы можете:
- Редактировать название, область и детали
- Установить Send transcript на
yesилиno. Когда стенограмма сеанса, в котором Claude поставил черновик в очередь, все еще доступна, она по умолчанию установлена наyes, что отправляет эту беседу в Anthropic;noотправляет только отчет - Отправить черновик, удалить его или оставить в очереди на потом
Чтобы вместо этого написать отчет самостоятельно, нажмите w для стандартного диалога обратной связи. /feedback с текстом после него и /bug открывают этот диалог напрямую.
Отправка черновика
Когда вы отправляете черновик, Claude Code отправляет его так же, как отчет /feedback, с тем же сроком хранения, и удаляет черновик с вашего компьютера. Когда вы отправляете с карточки, она показывает ✓ Sent; когда вы отправляете из очереди, она закрывается с квитанцией ID.
Отчет содержит:
- Ваше название, область и детали
- Информацию об окружении, такую как версия Claude Code, операционная система и модель
- ID недавних запросов API
- Стенограмму беседы, когда вы оставили Send transcript на
yesна экране просмотра. Отправка с карточки никогда не включает стенограмму
Claude Code сохраняет ваш рабочий каталог в локальном черновике, чтобы он мог найти стенограмму, и не отправляет каталог.
В организациях с нулевым сроком хранения данных Claude Code исключает этот инструмент, как и для /feedback. Если сеанс в такой организации все еще предлагает инструмент, черновики остаются на вашем компьютере, и отправка завершается с ошибкой Feedback collection is not available for organizations with custom data retention policies.
Удаление или сохранение черновика
Когда вы удаляете черновик, Claude Code удаляет его с вашего компьютера. Черновик, который вы оставляете в очереди, истекает через 30 дней или через cleanupPeriodDays, если это значение меньше. Очередь содержит 10 черновиков из всех ваших сеансов, и когда Claude ставит одиннадцатый, Claude Code удаляет самый старый. Когда вы запускаете /exit с черновиками из сеанса, все еще находящимися в очереди, Claude Code спрашивает, хотите ли вы их просмотреть или удалить перед выходом.
Отключение отзывов, написанных Claude
Установите Claude-drafted feedback на off в /config, что запишет параметр feedbackDrafts, или установите CLAUDE_CODE_SEND_FEEDBACK=0 на один сеанс. В любом случае Claude не сможет ставить черновики в очередь. Чтобы продолжить создание черновиков без карточек, установите feedbackDrafts на quiet. Администраторы могут установить feedbackDrafts в управляемых параметрах, которые имеют приоритет над вашим собственным параметром.
Сеансы без отзывов, написанных Claude
Claude Code включает инструмент в интерактивные сеансы терминала на вашем собственном компьютере, которые используют Claude API вместо облачного провайдера. Он исключает инструмент из:
- Неинтерактивных запусков
-pи сеансов Agent SDK, которые не имеют экрана для просмотра очереди - Облачных сеансов, таких как Claude Code в веб-версии, которые не могут писать в очередь на вашем компьютере
- Сеансов на Amazon Bedrock, Claude Platform на AWS, Google Cloud's Agent Platform или Microsoft Foundry
- Сеансов, где вы установили
CLAUDE_CODE_SEND_FEEDBACK=0илиDISABLE_FEEDBACK_COMMAND=1, установилиCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICна любое непустое значение или отключили получение флагов функций - Организаций, которые отключили отзывы о продукте, и организаций с нулевым сроком хранения данных
Доступность инструмента Task
Инструменты отслеживания задач TaskCreate, TaskGet, TaskUpdate, TaskList и TodoWrite доступны по умолчанию только на моделях Claude 3.x, Opus 4 через 4.7, Sonnet 4 через 4.6 и Haiku 4.5. Везде, где инструменты доступны, вы получаете четыре инструмента Task или TodoWrite вместо них, когда вы установите CLAUDE_CODE_ENABLE_TASKS=0.
На всех остальных моделях Claude Code исключает инструменты, если вы не согласитесь на их использование. То же самое применяется к ID модели, который Claude Code не распознает, например к пользовательскому имени модели, обслуживаемому через LLM gateway. На более новых моделях Claude отслеживает многоэтапную работу без письменного контрольного списка, а определения инструментов и напоминания занимают контекст. Без инструментов Claude ничего не добавляет в список задач во время работы.
Если вы хотите использовать эти инструменты на модели, которая не имеет их по умолчанию, выполните одно из следующих действий:
- Экспортируйте
CLAUDE_CODE_ENABLE_TODO_TOOLS=1перед запуском Claude Code, напримерCLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude. Claude Code затем предоставляет одинаковые инструменты на каждой модели и каждом провайдере - Назовите один из инструментов в
--allowedTools, напримерclaude --allowedTools TaskCreate - Перечислите инструменты в
--tools, что ограничивает встроенные инструменты сеанса только теми, которые он называет. Включите нужные вам инструменты вместе с другими встроенными инструментами, которые вы используете - В Agent SDK параметры
allowedToolsиtoolsработают так же, как два флага
В фоновых сеансах и в облачных сеансах Claude Code предоставляет одинаковые инструменты на каждой модели, независимо от того, указана она в списке или нет.
Claude Code предоставляет подагенту инструменты только когда ваш сеанс их имеет, даже когда подагент запускает другую модель. Товарищ команды агентов в процессе команды агентов следует вашему сеансу таким же образом, в то время как товарищ в своей собственной разделённой панели работает как отдельный процесс Claude Code, поэтому его собственная модель решает. Без инструментов Task агент координирует работу со своей командой через сообщения вместо общего списка задач.
Описанный здесь набор по умолчанию применяется в Claude Code версии 2.1.268 и позже.
Поведение инструмента WebFetch
WebFetch принимает URL и подсказку, описывающую, что нужно извлечь. Он загружает страницу, преобразует ответ в Markdown, когда сервер возвращает HTML, и запускает подсказку против содержимого, используя небольшую быструю модель. Для большинства загрузок Claude получает ответ этой модели, а не исходную страницу. Этап преобразования не настраивается.
Это делает WebFetch с потерей данных по замыслу. Подсказка извлечения определяет, что достигает Claude, поэтому результат, который говорит, что страница не упоминает что-то, может означать только то, что подсказка об этом не спрашивала. Попросите Claude загрузить снова с более конкретной подсказкой или используйте curl через Bash для необработанной страницы.
Несколько поведений формируют ответ, который получает Claude:
- WebFetch отказывает
localhostи любому другому имени хоста без точки, например простому имени интранета, перед выполнением запроса. Ошибка, которую он возвращает, говорит Claude достичь локальных серверов с помощьюcurlчерез Bash вместо этого. - HTTP URL-адреса автоматически обновляются до HTTPS.
- Большие страницы усекаются до фиксированного ограничения символов перед обработкой.
- WebFetch кэширует каждый ответ на 15 минут по умолчанию, поэтому повторные загрузки одного и того же URL возвращаются быстро. На Claude Code v2.1.233 или позже установите
CLAUDE_CODE_WEBFETCH_CACHE_TTL_MSдля изменения того, как долго WebFetch хранит каждый ответ. - Страница, которая не завершила загрузку в течение пяти минут, включая любые перенаправления, которые следует WebFetch, завершается ошибкой истечения срока. На Claude Code v2.1.268 или позже установите
CLAUDE_CODE_WEBFETCH_DEADLINE_MSдля изменения ограничения или на0для его удаления. - Когда URL перенаправляет на другой хост, WebFetch возвращает текстовый результат, который называет исходный URL и цель перенаправления вместо его следования. Claude затем загружает новый URL со вторым вызовом WebFetch.
- Когда этап извлечения попадает на перегруженный API, Claude Code повторяет попытку с отступом; загрузка, которая все еще не удается, возвращает результат ошибки. До v2.1.212 текст ошибки API мог достичь Claude как если бы это было извлеченное содержимое страницы.
В режимах Manual и acceptEdits режимы разрешений, WebFetch запрашивает перед загрузкой, за исключением доменов, которые ваши правила разрешений уже разрешают или запрещают, и встроенный набор предварительно одобренных доменов документации, которые загружаются без запроса. Независимо от того, что разрешают ваши правила, загрузка также проходит проверку безопасности домена WebFetch в первую очередь; этот раздел охватывает то, что отправляет проверка, и параметр, который ее пропускает. Подсказка предлагает три варианта:
- Да: одобряет эту загрузку только. Следующий вызов WebFetch снова запрашивает, даже для одного и того же домена.
- Да, и больше не спрашивайте для
<domain>: одобряет загрузку и сохраняет правило разрешенияWebFetch(domain:...)для этого домена в.claude/settings.local.jsonдля этого репозитория. См. как сохраненные одобрения сохраняются. Когда ваша организация устанавливаетallowManagedPermissionRulesOnly, Claude Code скрывает этот вариант. - Нет, и скажите Claude, что делать по-другому: отклоняет загрузку.
Чтобы разрешить домен заранее без запроса, добавьте правило разрешения, такое как WebFetch(domain:example.com); WebFetch(domain:*) разрешает каждый домен. Режимы разрешений auto и bypassPermissions режимы разрешений пропускают подсказку, за исключением домена, который соответствует явному правилу ask.
Явное правило WebFetch(domain:...) в deny, ask или allow имеет приоритет над предварительно одобренным набором, поэтому вы можете заблокировать предварительно одобренный домен или потребовать для него подсказку.
WebFetch устанавливает заголовок User-Agent, начинающийся с Claude-User, и заголовок Accept, который предпочитает Markdown перед HTML, чтобы серверы, поддерживающие согласование содержимого, могли возвращать Markdown напрямую.
Изолированные команды не наследуют встроенный набор предварительно одобренных доменов документации WebFetch. Чтобы позволить изолированной команде достичь домена без запроса, добавьте домен в allowedDomains или разрешите его с помощью правила WebFetch(domain:...), которое песочница также соблюдает. WebFetch никогда не читает список разрешений песочницы в ответ, поэтому добавление домена в песочницу или список разрешений сети организации не останавливает WebFetch от запроса для него.
Поведение инструмента WebSearch
WebSearch выполняет запрос к серверной части веб-поиска Anthropic и возвращает названия результатов и URL-адреса. Он не загружает страницы результатов. Чтобы прочитать страницу, найденную Claude в результатах поиска, он выполняет последующий запрос с помощью WebFetch.
Инструмент может выполнить до восьми серверных поисков за один вызов, внутренне уточняя поиск перед возвратом результатов. Claude может ограничить результаты с помощью allowed_domains для включения только определённых хостов или blocked_domains для их исключения. Эти два списка нельзя объединять в одном вызове.
Когда запрос поиска попадает на перегруженный API, Claude Code повторяет его с экспоненциальной задержкой; вызов, который всё ещё не удаётся, возвращает результат ошибки. До версии 2.1.212 текст ошибки API мог поступить к Claude как результаты поиска.
Правила разрешений WebSearch не требуют спецификатора. Простая запись WebSearch в allow или deny — это единственная форма.
Серверная часть поиска не настраивается. Для поиска с использованием другого поставщика добавьте MCP сервер, который предоставляет инструмент поиска.
WebSearch доступен в Claude API и Claude Platform на AWS. На Microsoft Foundry требуется развёртывание, размещённое на Anthropic: развёртывания, размещённые на Azure, не поддерживают серверные инструменты, поэтому вызов WebSearch не удаётся. На Google Cloud's Agent Platform он работает с Claude 4 и более поздними моделями, включая Opus, Sonnet и Haiku. Amazon Bedrock не предоставляет серверный инструмент веб-поиска.
Лимит поиска сеанса
Сеанс может выполнить максимум 200 вызовов WebSearch, подсчитанных во всей основной беседе и каждом подагенте, который он порождает, поэтому поиски, выполняемые параллельными веерообразными развёртываниями исследований, учитываются в одном и том же лимите. Лимит требует Claude Code версии 2.1.212 или позже. Когда Claude достигает лимита, дальнейшие вызовы возвращают уведомление, указывающее Claude продолжить с информацией, которую он уже собрал, вместо ошибки, которая могла бы пригласить повторную попытку. Вы не видите уведомление: ограниченный вызов отображается в беседе как поиск, который ничего не сделал, и если Claude нужны дополнительные поиски, уведомление указывает ему попросить вас повысить лимит.
Установите переменную окружения CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION для изменения лимита; она принимает положительное целое число, поэтому лимит можно повысить, но не отключить. Запуск /clear сбрасывает счётчик. Если работа, которая всё ещё может порождать подагентов, сохраняется после очистки, например запущенный рабочий процесс, счётчик переносится вместо этого.
Поведение инструмента Write
Инструмент Write создает новый файл или перезаписывает существующий полным содержимым. Он не добавляет и не объединяет.
Требуется ли Claude прочитать существующий файл в текущем разговоре перед его перезаписью, зависит от модели и файла:
- Claude Opus 4.6, Claude Haiku 4.5 и более старые модели всегда требуют чтения, поэтому Write в непрочитанный существующий файл завершается с ошибкой.
- Более новые модели могут перезаписать файл, который они никогда не читали в этом сеансе, при тех же условиях, что и read-before-edit: чтение его не потребует запроса разрешения и инструмент Read доступен.
- Jupyter notebooks и файлы, которые Claude прочитал только частично с уведомлением
PARTIAL view, требуют чтения на всех моделях.
Это ограничение не применяется к новым файлам. До версии 2.1.228 каждая модель требовала чтения перед перезаписью существующего файла.
Просмотр файла с помощью Bash также удовлетворяет этому требованию в соответствии с теми же правилами, описанными в Edit tool behavior.
Для частичных изменений существующего файла Claude использует Edit вместо Write.
Проверка доступных инструментов
Ваш точный набор инструментов зависит от вашего поставщика, платформы и параметров. Чтобы проверить, что загружено в работающем сеансе, спросите Claude напрямую:
What tools do you have access to?
Claude дает разговорное резюме. Для точных имен инструментов MCP запустите /mcp.
Инструмент advisor — это серверный инструмент, который запускает API, а не инструмент, который реализует Claude Code. Он не имеет имени, на которое вы можете ссылаться в правилах разрешений или сопоставителях hooks.
См. также
- MCP servers: добавляйте пользовательские инструменты, подключая внешние серверы
- Разрешения: система разрешений, синтаксис правил и шаблоны для конкретных инструментов
- Subagents: настройка доступа к инструментам для subagents
- Hooks: запуск пользовательских команд до или после выполнения инструмента