Настройки CLI (config.json)
Каждое поле config.json: как ведёт себя CLI openspec на вашей машине.
Расположение
CLI хранит свои машинные настройки в ~/.config/openspec/config.json на macOS и Linux, и в %APPDATA%\openspec\config.json на Windows. $XDG_CONFIG_HOME имеет приоритет на всех платформах при установке. Команда openspec config читает и редактирует этот файл.
Поля
| Ключ | Тип | Обязательное | Назначение |
|---|---|---|---|
profile | строка: core или custom | Нет | Выбирает набор рабочих процессов, которые устанавливает openspec init |
delivery | строка: both, skills или commands | Нет | Устанавливает ли init навыки, слэш-команды или и то и другое |
workflows | список строк | Нет | Список рабочих процессов, которые устанавливает профиль custom |
featureFlags | словарь: флаг → булево значение | Нет | Булевы переключатели функций |
defaultStore | строка | Нет | Машинный резервный store для определения root |
openers | словарь: id инструмента → настройки | Нет | Инструменты, в которых открываются workset'ы, и способ их запуска |
telemetry | словарь | Нет | Отказ от телеметрии, анонимный id и состояние уведомления |
profile
Какой набор рабочих процессов устанавливает openspec init. По умолчанию — core: propose, explore, apply, update, sync и archive. При установке custom устанавливается ровно список workflows.
delivery
Устанавливает ли init рабочие процессы в виде навыков, в виде слэш-команд или и то и другое. По умолчанию — both.
workflows
Рабочие процессы, которые устанавливает профиль custom; игнорируется, когда профиль — core. Допустимые id: propose, explore, new, continue, apply, update, ff, sync, archive, bulk-archive, verify, onboard.
featureFlags
Булевы переключатели, привязанные к имени флага, устанавливаются командой openspec config set featureFlags.<flag> true. Ни один флаг не читается CLI на сегодняшний день.
defaultStore
Машинный резервный store id для определения root; учитывается только тогда, когда не срабатывает ни флаг --store, ни локальный openspec/, ни проектный указатель store:. Полная последовательность описана в Определение root.
openers
Инструменты, в которых workset может быть открыт, привязанные к id инструмента. Редактируйте openers в глобальном config.json с помощью openspec config edit в вашем терминале.
| Поле | Описание |
|---|---|
style | workspace-file или attach-dirs. Обязательно для нового инструмента; необязательно для встроенного. |
label | Непустая строка, отображаемая в выборе инструмента. По умолчанию равна id для нового инструмента. |
command | Непустое имя или путь к исполняемому файлу. По умолчанию равна id для нового инструмента. Аргументы указывайте в args, а не в этой строке. |
args | Массив строк, передаваемых перед файлом workspace или флагами attach. По умолчанию — [] для нового инструмента. |
attach_flag | Непустая строка, сопоставляемая с каждым путём участника для attach-dirs. По умолчанию — --add-dir для нового инструмента. Игнорируется для workspace-file. |
Переопределение встроенных: code, cursor, claude и codex сохраняют любые поля, которые вы не указали. Установка args заменяет весь список аргументов; [] очищает его.
Стили запуска: workspace-file передаёт путь сгенерированного .code-workspace файла исполняемому файлу. attach-dirs передаёт одну пару флаг/путь для каждого участника, включая основного.
Доступность: attach-dirs openers, включая Claude Code и Codex, отключены по умолчанию. Вы не можете выбрать или сохранить их с помощью --tool, а OpenSpec отказывается открывать workset, который уже указывает на них. Переопределения конфигурации не включают стиль запуска attach-dirs.
Валидация: неизвестные поля, неверные типы и новый инструмент без style вызывают ошибку при чтении таблицы opener'ов командой workset.
Этот пример добавляет VS Code Insiders и передаёт --new-window при каждом запуске встроенного opener'а VS Code:
{
"openers": {
"code-insiders": {
"style": "workspace-file",
"label": "VS Code Insiders"
},
"code": {
"args": ["--new-window"]
}
}
}Соответствующий исполняемый файл code-insiders или code должен быть установлен и доступен в PATH.
telemetry
CLI сохраняет ваш анонимный id и информацию о том, было ли показано уведомление при первом запуске. Установите telemetry.enabled в false, чтобы отключить телеметрию. Вы также можете отказаться от неё с помощью OPENSPEC_TELEMETRY=0 или DO_NOT_TRACK=1 в вашем окружении.
Пример
Заполненный config.json:
{
"profile": "core",
"delivery": "both",
"featureFlags": {},
"telemetry": {
"anonymousId": "5f8a2c1e-4b6d-4f9a-9c3d-7e1b2a8d4c6f",
"noticeSeen": true
}
}