Конфигурация
Где лежат файлы настроек 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 |
| Windows | C:\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действуют только в управляемых настройках.
Пример
{
"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 продолжает работать во всех инструментах, которые его читают.
Модель
| Ключ | Тип | Назначение |
|---|---|---|
model | string | Модель по умолчанию в виде provider:model или просто id |
effortLevel | string | Уровень рассуждений по умолчанию: none, minimal, low, medium, high, xhigh, max. effort принимается как синоним |
fallbackModel | string или string[] | Модель или модели, которые пробуются, когда основная модель недоступна |
availableModels | string[] | Ограничить выбор модели этими моделями |
outputStyle | string | Имя стиля ответов из .cusp/output-styles/ или .claude/output-styles/ |
language | string | Предпочитаемый язык ответов |
Разрешения
| Ключ | Тип | Назначение |
|---|---|---|
permissions.allow | string[] | Правила, которые выполняются без вопросов |
permissions.ask | string[] | Правила, которые всегда требуют подтверждения |
permissions.deny | string[] | Правила, которые всегда запрещены |
permissions.defaultMode | string | default, acceptEdits, plan, auto или bypassPermissions |
permissions.additionalDirectories | string[] | Дополнительные папки, где агент может работать помимо рабочей области |
permissions.disableBypassPermissionsMode | "disable" или boolean | Запретить режим bypass |
permissions.disableAutoMode | "disable" или boolean | Запретить режим auto |
permissions.blockReadsOutsideWorkingDirectories | boolean | Блокировать чтение за пределами рабочей области и дополнительных папок |
allowManagedPermissionRulesOnly | boolean | Только в управляемых настройках. Игнорировать правила с других уровней |
Синтаксис правил описан в разделе Разрешения.
Хуки
| Ключ | Тип | Назначение |
|---|---|---|
hooks | object | Конфигурация хуков. См. Хуки |
disableAllHooks | boolean | Отключить хуки |
allowManagedHooksOnly | boolean | Только в управляемых настройках. Запускать только управляемые хуки |
allowedHttpHookUrls | string[] | URL, к которым могут обращаться хуки http |
httpHookAllowedEnvVars | string[] | Переменные окружения, которые хуки http могут подставлять в заголовки |
Песочница
| Ключ | Тип | Назначение |
|---|---|---|
sandbox.enabled | boolean | Выполнять команды оболочки в песочнице ОС. По умолчанию true |
sandbox.failIfUnavailable | boolean | Отказываться выполнять команды, если песочницу нельзя применить. По умолчанию true |
sandbox.filesystem.allowWrite, allowRead, denyRead | string[] | Настройка доступа к файловой системе |
sandbox.network.allowedDomains, deniedDomains | string[] | Хосты, доступные через фильтрующий прокси, и хосты, доступ к которым всегда запрещён. В Linux — только рекомендательно |
sandbox.network.allowLocalPorts | number[] | Порты localhost, которые могут использовать команды |
sandbox.network.allowLocalBinding | boolean | Полностью открыть localhost. По умолчанию false |
sandbox.network.allowUnixSockets | string[] | Unix-сокеты, к которым могут подключаться команды |
autoAllowBashIfSandboxed, allowUnsandboxedCommands, excludedCommands, filesystem.denyWrite и network.allowAllUnixSockets принимаются, чтобы существующие настройки загружались, но пока не применяются. Настройки, ослабляющие песочницу, в проектных настройках игнорируются. См. Песочница.
MCP
| Ключ | Тип | Назначение |
|---|---|---|
mcpServers | object | Определения серверов в том же формате, что и .mcp.json |
enabledMcpjsonServers | string[] | Одобрить эти проектные серверы |
disabledMcpjsonServers | string[] | Отклонить эти проектные серверы |
enableAllProjectMcpServers | boolean | Одобрить все проектные серверы |
См. MCP-серверы.
Инструкции, навыки и агенты
| Ключ | Тип | Назначение |
|---|---|---|
claudeMdExcludes | string[] | Glob-шаблоны файлов инструкций, которые нужно пропустить. См. Память |
skillOverrides | object | Для каждого навыка: on, name-only, user-invocable-only или off |
disableSkills | boolean | Отключить все навыки |
disableSkillShellExecution | boolean | Не выполнять !`command` в навыках |
disableAgents | boolean | Отключить пользовательских субагентов |
agent | string | Запускать основную сессию с этим определением агента |
Окружение и инструменты
| Ключ | Тип | Назначение |
|---|---|---|
env | object | Переменные окружения для команд оболочки и хуков. Числа и логические значения преобразуются в строки |
apiKeyHelper | string | Команда, которая печатает API-ключ, — для ключей с ротацией |
statusLine | object | { "type": "command", "command": "…" }: команда, вывод которой показывается в строке состояния |
Git
| Ключ | Тип | Назначение |
|---|---|---|
attribution.commit | string | Трейлер, который добавляется к коммитам агента. attribution: false отключает его |
attribution.pr | string | Текст, который добавляется в описания PR |
includeCoAuthoredBy | boolean | Устаревшая форма переключателя атрибуции коммитов |
Обслуживание
| Ключ | Тип | Назначение |
|---|---|---|
cleanupPeriodDays | integer | Сколько хранить неактивные сессии |
Другие файлы, которые читает Cusp
| Файл | Назначение |
|---|---|
CUSP.md, AGENTS.md, CLAUDE.md, … | Инструкции. См. Память |
.cusp/rules/*.md | Правила-инструкции, при необходимости привязанные к путям |
.cusp/skills/<name>/SKILL.md | Навыки |
.cusp/agents/*.md | Субагенты |
.cusp/mcp.json, .mcp.json | MCP-серверы |
.cusp/output-styles/*.md | Стили ответов |
У каждого пути в .cusp/ есть пользовательский аналог в ~/.cusp/ и эквивалент в .claude/, который Cusp тоже читает.
Конфигурация демона
Демон (daemon) берёт собственную конфигурацию из флагов и переменных окружения CUSP_*. Они редко нужны: десктопное приложение и CLI задают их за вас.
| Переменная | По умолчанию | Назначение |
|---|---|---|
CUSP_DATA_DIR | ~/.cusp | База данных, данные контрольных точек и worktree |
CUSP_HOST | 127.0.0.1 | Интерфейс для привязки. Адреса, отличные от loopback, отклоняются, если не задан CUSP_ALLOW_REMOTE |
CUSP_ALLOW_REMOTE | false | Разрешить интерфейс, отличный от loopback. Предназначено для облачных песочниц за прокси с аутентификацией |
CUSP_PORT | 0 (случайный) | TCP-порт |
CUSP_TOKEN | Генерируется при каждом запуске | Bearer-токен, не короче 16 символов |
CUSP_ALLOWED_ORIGINS | Источники (origins) десктопного приложения | Источники браузера, разрешённые CORS и для подключений WebSocket |
CUSP_LOG_LEVEL | info | fatal, error, warn, info, debug, trace или silent |
CUSP_PARENT_PID | — | Завершиться, когда завершится этот процесс |