Перейти к основному содержанию
Переменные окружения могут управлять поведением Claude Code, такие как выбор модели, аутентификация, маршрутизация запросов и переключатели функций. Многие из этих же поведений также можно настроить через поле файла параметров, флаг CLI или команду в сеансе, такую как /model. На этой странице рассматривается, как:

Установка переменных окружения

Переменная, установленная в вашей оболочке, действует только в течение этой сессии терминала, а переменная в файле настроек применяется каждый раз при запуске claude.

Установка переменных в вашей оболочке

Установите переменную перед запуском claude:
Чтобы установить её для каждой сессии, добавьте строку export в ~/.bashrc, ~/.zshrc или файл профиля вашей оболочки.
Строка присваивания ничего не выводит при успехе. Чтобы подтвердить, что переменная установлена, выведите её в той же оболочке:

Установка переменных в файлах настроек

Добавьте переменные под ключом env в файл settings.json, создав файл, если его ещё нет. Claude Code читает их непосредственно из файла, поэтому они вступают в силу независимо от того, как был запущен claude. Работающая сессия применяет новые и изменённые значения к своему окружению при сохранении файла, но функция, которая читает свои переменные один раз при запуске, такая как мониторинг OpenTelemetry, сохраняет свои значения при запуске до перезапуска. Удаление переменной из файла не отменяет её в работающей сессии; удаление вступает в силу при следующем запуске claude.
~/.claude/settings.json
Claude Code копирует эти значения в своё окружение как есть. Никакая оболочка их не обрабатывает, поэтому сокращения, такие как ~ или $HOME, остаются в том виде, в каком они введены. Для переменной, принимающей путь, например CLAUDE_CONFIG_DIR, укажите абсолютный путь: "CLAUDE_CONFIG_DIR": "/home/you/.claude-work". Выбранный вами файл определяет, к кому применяются переменные: См. Файлы настроек для информации о том, где находится каждый файл, и Приоритет настроек для информации о том, как они объединяются, когда более одного устанавливает одну и ту же переменную.

Приоритет

Некоторые поведения имеют как переменную окружения, так и выделенный ключ параметров, и то, какой из них Claude Code читает первым, отличается для каждого ключа. Для ANTHROPIC_MODEL и CLAUDE_CODE_AUTO_CONNECT_IDE Claude Code сначала читает переменную и использует параметр model или autoConnectIde только когда переменная не установлена. Для пары, которую вы устанавливаете, проверьте строку переменной ниже и запись ключа в справочнике параметров. Когда одна и та же переменная установлена как в вашей оболочке, так и в блоке env файла параметров, применяется значение из файла параметров в большинстве сеансов. Claude Code записывает каждую запись env в переменные окружения процесса, заменяя значение, унаследованное из оболочки. Как значения env взаимодействуют с вашей оболочкой охватывает сеансы, которые сохраняют унаследованное значение вместо этого, и параметр env указывает, когда он их применяет. Несколько переменных имеют специальную обработку; параметр env перечисляет исключения. В файле параметров вы можете установить переменную, но не можете удалить её. Чтобы переопределить переменную, которую вы не можете отменить, например устаревшую CLAUDE_CODE_USE_VERTEX, экспортированную профилем оболочки, который вы не контролируете, установите её на пустую строку в блоке env: "CLAUDE_CODE_USE_VERTEX": "". Claude Code рассматривает пустое значение как неустановленное для выбора поставщика. Подпроцессы по-прежнему наследуют пустое значение. Между файлами параметров значения env следуют приоритету параметров, поэтому управляемая запись параметров переопределяет ту же переменную в пользовательских или проектных параметрах. Проектные и локальные параметры не могут устанавливать некоторые переменные, такие как CLAUDE_CONFIG_DIR и переменные экспортера OpenTelemetry. Переменные, которые Claude Code игнорирует в env перечисляет их, а также значения отключения OpenTelemetry, которые по-прежнему применяются. То, как переменная окружения взаимодействует с флагами CLI и командами в сеансе, варьируется в зависимости от функции: --model и /model переопределяют ANTHROPIC_MODEL, в то время как CLAUDE_CODE_EFFORT_LEVEL переопределяет --effort и /effort. Когда переменная взаимодействует с другим источником конфигурации, её строка в списке Переменные указывает приоритет или ссылается на страницу, которая это документирует. Claude Code читает переменные окружения оболочки при запуске, поэтому изменения в них вступают в силу при следующем запуске claude. Переменные, установленные под ключом env в файлах настроек, повторно применяются к работающей сессии при изменении файла, за исключением переменных, читаемых только при запуске, как описано в разделе Установка переменных в файлах настроек.

Переменные

Числовые переменные, такие как таймауты, бюджеты токенов и количество повторных попыток, помимо обычных цифр принимают экспоненциальную запись и запись с разделителями разрядов, кроме случаев, когда в строке переменной указано, что она принимает только обычные цифры. Например, Claude Code читает 2e3 как 2000, а 64_000 как 64000. До v2.1.211 такая запись могла незаметно установить гораздо меньшее значение, например 1e6 устанавливало таймаут равным 1.
Для переменных, которые включают или отключают поведение, установите 1, true, yes или on, чтобы включить его, и 0, false, no или off, чтобы отключить, в любом регистре.Некоторые переменные проверяют только то, заданы ли они вообще, поэтому любое непустое значение, включая 0, включает поведение, а отключить его можно, удалив переменную или установив пустое значение. Так работают следующие переменные:
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
  • DISABLE_TELEMETRY
  • DISABLE_ERROR_REPORTING
  • CLAUDE_CODE_TMUX_TRUECOLOR
  • IS_DEMO
В строке каждой переменной также указано её собственное правило.
Также поддерживаются стандартные переменные экспортёра OpenTelemetry (OTEL_METRICS_EXPORTER, OTEL_LOGS_EXPORTER, OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_PROTOCOL, OTEL_EXPORTER_OTLP_HEADERS, OTEL_METRIC_EXPORT_INTERVAL, OTEL_RESOURCE_ATTRIBUTES и варианты для отдельных сигналов). Подробности конфигурации см. в разделе Мониторинг. Задавайте CLAUDE_CODE_ENABLE_TELEMETRY и переменные OpenTelemetry, которые включают экспорт, выбирают его место назначения или захватывают содержимое, в оболочке, пользовательских настройках или управляемых настройках. Claude Code игнорирует их в настройках проекта и локальных настройках, за исключением значений отключения, описанных в том разделе. OTEL_RESOURCE_ATTRIBUTES и переменные интервала экспорта, таймаута и сжатия, такие как OTEL_METRIC_EXPORT_INTERVAL, по-прежнему применяются из настроек проекта и локальных настроек.

Что удаляет очистка окружения подпроцессов

Если вы задаёте для CLAUDE_CODE_SUBPROCESS_ENV_SCRUB значение 1, Claude Code удаляет учётные данные из окружений запускаемых им подпроцессов, таких как команды Bash, хуки и stdio MCP-серверы. Это сокращает объём данных, которые может прочитать атака с промпт-инъекцией. Процесс Claude Code сохраняет учётные данные для собственных вызовов API. Очистка распознаёт учётные данные по имени переменной или по виду её значения, поэтому используйте её как один из уровней защиты наряду с узкими правилами разрешений, а не как единственный механизм контроля. В таблице показано, что очистка делает с примерами переменных: Поскольку очистка оставляет GITHUB_TOKEN на месте, предоставляйте заданию GitHub Actions минимально необходимые permissions. Чтобы удалить токен GitHub из команд Bash, выполняемых в песочнице, добавьте запись deny в sandbox.credentials. Не задавайте очистку, если подпроцессу нужна одна из удаляемых переменных. В Linux очистка также запускает подпроцессы Bash в изолированном пространстве имён PID, чтобы они не могли читать окружения процессов хоста через /proc. В качестве побочного эффекта ps, pgrep и kill не могут видеть процессы хоста или отправлять им сигналы. До версии v2.1.251 очистка удаляла ANTHROPIC_API_KEY и AWS_SECRET_ACCESS_KEY и оставляла остальные примеры переменных из таблицы без изменений.

Функции, которым нужна загрузка флагов функций

Claude Code включает некоторые функции с помощью флагов функций, которые он загружает от Anthropic. Claude Code пропускает эту загрузку в следующих сессиях:
  • Сессия, в которой вы задали CLAUDE_CODE_DISABLE_FEATURE_FLAGS, DISABLE_TELEMETRY, DO_NOT_TRACK или CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC; в строке каждой переменной в таблице переменных указано, какие значения отключают загрузку
  • Сессия у стороннего провайдера, например Amazon Bedrock, Claude Platform on AWS, Google Cloud’s Agent Platform или Microsoft Foundry, если только хост-платформа, встраивающая Claude Code, не задаёт CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST
  • Сессия через шлюз приложений Claude
Когда загрузка отключена, вы не можете:

Первая сессия после установки или обновления

В вашей первой сессии после установки Claude Code или обновления до версии, в которой добавлена функция, функция, зависящая от флага, может отсутствовать. Когда Claude Code загружает свои флаги функций во время этой сессии, он сохраняет их на машине, поэтому в вашей следующей сессии на этой машине функция будет доступна. В таких конфигурациях, как описанные ниже, сессии после первой тоже начинаются без только что загруженных флагов:
  • Чистое окружение при каждом запуске: если каждый запуск начинается в CI-контейнере или любом другом окружении без флагов, сохранённых предыдущей сессией, каждый запуск является первой сессией
  • Токен шлюза без API-ключа: если вы аутентифицируетесь с помощью ANTHROPIC_AUTH_TOKEN без API-ключа, а ANTHROPIC_BASE_URL указывает на хост, отличный от хоста Anthropic, например на LLM-шлюз, у Claude Code нет учётных данных для загрузки флагов

См. также