Конфигурация

Где лежат файлы настроек Cusp, как они объединяются и какие ключи принимают.

Cusp настраивается JSON-файлами настроек в распространённом формате settings.json. Чтобы начать работу, ни один из них не нужен. Они пригодятся, когда вы захотите закрепить модель, заранее разрешить команды, добавить хуки или настроить песочницу.

Файлы настроек

УровеньФайлОбщий?Для чего
УправляемыйЗадаётся администратором (см. ниже)ОрганизацияПолитики, которые пользователи не могут переопределить
Командная строка--allowedTools, --permission-mode, …Этот запускРазовые переопределения
Локальный.cusp/settings.local.jsonНет. Добавьте его в .gitignoreВаши личные настройки для этого проекта. Сюда сохраняется выбор «Разрешать всегда»
Проектный.cusp/settings.jsonДа. Закоммитьте егоНастройки команды для этого проекта
Пользовательский~/.cusp/settings.jsonНетВаши значения по умолчанию для всех проектов

На каждом уровне Cusp также читает общий файл (.claude/settings.local.json, .claude/settings.json, ~/.claude/settings.json). Если на одном уровне есть оба, приоритет у файла из .cusp/.

Управляемые настройки

ПлатформаПути, от наивысшего приоритета
macOS/Library/Application Support/Cusp/managed-settings.json, /Library/Application Support/ClaudeCode/managed-settings.json
WindowsC:\Program Files\Cusp\managed-settings.json, C:\Program Files\ClaudeCode\managed-settings.json
Linux/etc/cusp/managed-settings.json, /etc/claude-code/managed-settings.json

Как объединяются настройки

Приоритет, от наивысшего: управляемые → командная строка → локальные → проектные → пользовательские.

  • Скалярные значения (model, effortLevel, …): побеждает самый высокий уровень, где задан ключ.
  • Правила разрешений со всех уровней объединяются и проверяются в порядке deny → ask → allow. Запрет на любом уровне побеждает.
  • Хуки со всех уровней выполняются все.
  • Значения env объединяются; для каждой переменной побеждает более высокий уровень.

Настройки читаются нестрого. Неизвестные ключи сохраняются и игнорируются. Известный ключ с недопустимым значением отбрасывается с предупреждением, где указаны файл и ключ, а остальная часть файла всё равно применяется. Файл с некорректным JSON пропускается с предупреждением.

Что не может задать проект

Настройки репозитория пишет автор репозитория, поэтому некоторые ключи ограничены:

  • Пока вы не доверились рабочей области, проектные и локальные файлы не могут задавать hooks, env, apiKeyHelper, statusLine, enableAllProjectMcpServers, enabledMcpjsonServers, permissions.allow и permissions.additionalDirectories. Правила deny и ask при этом действуют, потому что они только сужают возможности агента.
  • Никогда: проектные и локальные файлы не могут установить permissions.defaultMode в auto или bypassPermissions и не могут задавать защищённые переменные окружения (HOME, TMPDIR, TMP, TEMP, XDG_*, OTEL_EXPORTER_OTLP_*, а также переменные с папками конфигурации Cusp и агентов, чьи файлы он читает). Ослабить песочницу они тоже не могут: отключить её, открыть localhost или Unix-сокеты, добавить пути для чтения или записи можно только в пользовательских, управляемых файлах или в файлах --settings.
  • Только управляемые: allowManagedHooksOnly и allowManagedPermissionRulesOnly действуют только в управляемых настройках.

Пример

.cusp/settings.json
{
  "model": "anthropic:claude-opus-5-5",
  "effortLevel": "medium",
  "permissions": {
    "allow": ["Bash(bun test *)", "Bash(bun run lint)", "Edit(src/**)"],
    "deny": ["Read(.env)", "Read(**/*.pem)"],
    "defaultMode": "acceptEdits"
  },
  "env": {
    "NODE_OPTIONS": "--max-old-space-size=8192"
  },
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|MultiEdit|Write|ApplyPatch",
        "hooks": [{ "type": "command", "command": "bunx biome format --write ." }]
      }
    ]
  }
}

Ключи

Cusp разбирает полную схему settings.json. Ключи для возможностей, которых в Cusp ещё нет, принимаются и игнорируются, но никогда не отклоняются, поэтому общий .claude/settings.json продолжает работать во всех инструментах, которые его читают.

Модель

КлючТипНазначение
modelstringМодель по умолчанию в виде provider:model или просто id
effortLevelstringУровень рассуждений по умолчанию: none, minimal, low, medium, high, xhigh, max. effort принимается как синоним
fallbackModelstring или string[]Модель или модели, которые пробуются, когда основная модель недоступна
availableModelsstring[]Ограничить выбор модели этими моделями
outputStylestringИмя стиля ответов из .cusp/output-styles/ или .claude/output-styles/
languagestringПредпочитаемый язык ответов

Разрешения

КлючТипНазначение
permissions.allowstring[]Правила, которые выполняются без вопросов
permissions.askstring[]Правила, которые всегда требуют подтверждения
permissions.denystring[]Правила, которые всегда запрещены
permissions.defaultModestringdefault, acceptEdits, plan, auto или bypassPermissions
permissions.additionalDirectoriesstring[]Дополнительные папки, где агент может работать помимо рабочей области
permissions.disableBypassPermissionsMode"disable" или booleanЗапретить режим bypass
permissions.disableAutoMode"disable" или booleanЗапретить режим auto
permissions.blockReadsOutsideWorkingDirectoriesbooleanБлокировать чтение за пределами рабочей области и дополнительных папок
allowManagedPermissionRulesOnlybooleanТолько в управляемых настройках. Игнорировать правила с других уровней

Синтаксис правил описан в разделе Разрешения.

Хуки

КлючТипНазначение
hooksobjectКонфигурация хуков. См. Хуки
disableAllHooksbooleanОтключить хуки
allowManagedHooksOnlybooleanТолько в управляемых настройках. Запускать только управляемые хуки
allowedHttpHookUrlsstring[]URL, к которым могут обращаться хуки http
httpHookAllowedEnvVarsstring[]Переменные окружения, которые хуки http могут подставлять в заголовки

Песочница

КлючТипНазначение
sandbox.enabledbooleanВыполнять команды оболочки в песочнице ОС. По умолчанию true
sandbox.failIfUnavailablebooleanОтказываться выполнять команды, если песочницу нельзя применить. По умолчанию true
sandbox.filesystem.allowWrite, allowRead, denyReadstring[]Настройка доступа к файловой системе
sandbox.network.allowedDomains, deniedDomainsstring[]Хосты, доступные через фильтрующий прокси, и хосты, доступ к которым всегда запрещён. В Linux — только рекомендательно
sandbox.network.allowLocalPortsnumber[]Порты localhost, которые могут использовать команды
sandbox.network.allowLocalBindingbooleanПолностью открыть localhost. По умолчанию false
sandbox.network.allowUnixSocketsstring[]Unix-сокеты, к которым могут подключаться команды

autoAllowBashIfSandboxed, allowUnsandboxedCommands, excludedCommands, filesystem.denyWrite и network.allowAllUnixSockets принимаются, чтобы существующие настройки загружались, но пока не применяются. Настройки, ослабляющие песочницу, в проектных настройках игнорируются. См. Песочница.

MCP

КлючТипНазначение
mcpServersobjectОпределения серверов в том же формате, что и .mcp.json
enabledMcpjsonServersstring[]Одобрить эти проектные серверы
disabledMcpjsonServersstring[]Отклонить эти проектные серверы
enableAllProjectMcpServersbooleanОдобрить все проектные серверы

См. MCP-серверы.

Инструкции, навыки и агенты

КлючТипНазначение
claudeMdExcludesstring[]Glob-шаблоны файлов инструкций, которые нужно пропустить. См. Память
skillOverridesobjectДля каждого навыка: on, name-only, user-invocable-only или off
disableSkillsbooleanОтключить все навыки
disableSkillShellExecutionbooleanНе выполнять !`command` в навыках
disableAgentsbooleanОтключить пользовательских субагентов
agentstringЗапускать основную сессию с этим определением агента

Окружение и инструменты

КлючТипНазначение
envobjectПеременные окружения для команд оболочки и хуков. Числа и логические значения преобразуются в строки
apiKeyHelperstringКоманда, которая печатает API-ключ, — для ключей с ротацией
statusLineobject{ "type": "command", "command": "…" }: команда, вывод которой показывается в строке состояния

Git

КлючТипНазначение
attribution.commitstringТрейлер, который добавляется к коммитам агента. attribution: false отключает его
attribution.prstringТекст, который добавляется в описания PR
includeCoAuthoredBybooleanУстаревшая форма переключателя атрибуции коммитов

Обслуживание

КлючТипНазначение
cleanupPeriodDaysintegerСколько хранить неактивные сессии

Другие файлы, которые читает Cusp

ФайлНазначение
CUSP.md, AGENTS.md, CLAUDE.md, …Инструкции. См. Память
.cusp/rules/*.mdПравила-инструкции, при необходимости привязанные к путям
.cusp/skills/<name>/SKILL.mdНавыки
.cusp/agents/*.mdСубагенты
.cusp/mcp.json, .mcp.jsonMCP-серверы
.cusp/output-styles/*.mdСтили ответов

У каждого пути в .cusp/ есть пользовательский аналог в ~/.cusp/ и эквивалент в .claude/, который Cusp тоже читает.

Конфигурация демона

Демон (daemon) берёт собственную конфигурацию из флагов и переменных окружения CUSP_*. Они редко нужны: десктопное приложение и CLI задают их за вас.

ПеременнаяПо умолчаниюНазначение
CUSP_DATA_DIR~/.cuspБаза данных, данные контрольных точек и worktree
CUSP_HOST127.0.0.1Интерфейс для привязки. Адреса, отличные от loopback, отклоняются, если не задан CUSP_ALLOW_REMOTE
CUSP_ALLOW_REMOTEfalseРазрешить интерфейс, отличный от loopback. Предназначено для облачных песочниц за прокси с аутентификацией
CUSP_PORT0 (случайный)TCP-порт
CUSP_TOKENГенерируется при каждом запускеBearer-токен, не короче 16 символов
CUSP_ALLOWED_ORIGINSИсточники (origins) десктопного приложенияИсточники браузера, разрешённые CORS и для подключений WebSocket
CUSP_LOG_LEVELinfofatal, error, warn, info, debug, trace или silent
CUSP_PARENT_PID—Завершиться, когда завершится этот процесс

На этой странице