SpyBara
Go Premium

settings.md 2026-09-27 23:59 UTC to 2026-09-28 22:01 UTC

This page contains 2 additions and 2 deletions.

2026
Sat 12 03:02 Fri 18 23:58 Tue 22 23:59 Fri 25 23:58 Mon 28 22:59

Файлы параметров и приоритет

Измените параметры Claude Code, выберите область, к которой принадлежит ключ, проверьте изменение и узнайте, какое значение Claude Code использует, когда ключ установлен в нескольких местах.

export const SettingsPrecedence = () => { const LEVELS = [{ n: 1, name: 'Managed settings', file: 'managed-settings.json, MDM, or the claude.ai console', who: 'Your organization', w: 390 }, { n: 2, name: 'Command line', file: 'claude --settings', who: 'You, this session', w: 420 }, { n: 3, name: 'Project local', file: '.claude/settings.local.json', who: 'You, this project', w: 480 }, { n: 4, name: 'Shared project', file: '.claude/settings.json', who: 'Everyone in the project', w: 540 }, { n: 5, name: 'User', file: '~/.claude/settings.json', who: 'You, every project', w: 600 }]; const W = 760; const ROW = 58; const GAP = 8; const TOP = 34; const H = TOP + LEVELS.length * (ROW + GAP) + 30; const cx = W / 2; const mono = 'var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace)'; const sans = 'var(--font-sans, system-ui, -apple-system, sans-serif)'; return

<svg viewBox={0 0 ${W} ${H}} xmlns="http://www.w3.org/2000/svg"> Highest precedence {LEVELS.map((l, i) => { const y = TOP + i * (ROW + GAP); const x = cx - l.w / 2; const top = i === 0; return <rect x={x} y={y} width={l.w} height={ROW} rx={10} fill={top ? 'var(--sp-top-fill)' : 'var(--sp-fill)'} stroke={top ? 'var(--sp-top)' : 'var(--sp-stroke)'} strokeWidth={top ? 1.5 : 1} /> <text x={x + 14} y={y + 24} fontFamily={sans} fontSize="14" fontWeight="600" fill="var(--sp-text)">{l.n}. {l.name} <text x={x + 14} y={y + 43} fontFamily={mono} fontSize="11.5" fill="var(--sp-sub)">{l.file} <text x={x + l.w - 14} y={y + 24} textAnchor="end" fontFamily={sans} fontSize="12" fill="var(--sp-faint)">{l.who} ; })} <text x={cx} y={H - 10} textAnchor="middle" fontFamily={sans} fontSize="12.5" fontWeight="600" fill="var(--sp-sub)">Lowest precedence <line x1={W - 40} y1={TOP + 10} x2={W - 40} y2={H - 38} /> <path d={M ${W - 46} ${TOP + 18} L ${W - 40} ${TOP + 10} L ${W - 34} ${TOP + 18}} /> <text x={W - 40} y={H - 22} textAnchor="middle" fontFamily={sans} fontSize="10.5" fill="var(--sp-faint)">overrides
; };

export const SettingsScope = ({defaultSelected = 'project'}) => { const FILES = [{ id: 'user', path: '/.claude/settings.json' }, { id: 'project', path: 'acme-app/.claude/settings.json' }, { id: 'local', path: 'acme-app/.claude/settings.local.json' }, { id: 'managed', path: 'Managed settings', ring: 'managed-settings.json, MDM, or the claude.ai console' }]; const SHORT = { user: '/.claude/settings.json', project: 'acme-app/.claude/settings.json', local: 'acme-app/.claude/settings.local.json', managed: 'managed-settings.json, MDM, or the claude.ai console' }; const TILE_MARK = { project: 'settings.json', local: 'settings.local.json' }; const initial = FILES.some(f => f.id === defaultSelected) ? defaultSelected : 'project'; const [sel, setSel] = useState(initial); const [scale, setScale] = useState(1); const [isFullscreen, setIsFullscreen] = useState(false); const rootRef = useRef(null); const frameRef = useRef(null); const CANVAS_W = 862; const CANVAS_H = 240; useEffect(() => { const el = frameRef.current; if (!el) return; const measure = () => setScale(Math.min(1, el.clientWidth / CANVAS_W)); measure(); if (typeof ResizeObserver === 'undefined') { window.addEventListener('resize', measure); return () => window.removeEventListener('resize', measure); } const ro = new ResizeObserver(measure); ro.observe(el); return () => ro.disconnect(); }, []); useEffect(() => { const onFsChange = () => setIsFullscreen(!!document.fullscreenElement); document.addEventListener('fullscreenchange', onFsChange); return () => document.removeEventListener('fullscreenchange', onFsChange); }, []); const toggleFullscreen = () => { if (!rootRef.current) return; if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {}); }; const COVERAGE = { user: ['website', 'api', 'yacme'], project: ['yacme', 'tacme', 'cacme'], local: ['yacme'], managed: ['website', 'api', 'yacme', 'tacme', 'cacme'] }; const RINGS = { local: { l: 282, t: 50, w: 142, h: 124 }, project: { l: 282, t: 50, w: 560, h: 124 }, user: { l: 2, t: 34, w: 446, h: 198 }, managed: { l: 0, t: 32, w: 862, h: 204 } }; const TILES = [{ id: 'website', name: 'website/', left: 30, caption: '' }, { id: 'api', name: 'api/', left: 160, caption: '' }, { id: 'yacme', name: 'acme-app/', left: 290, caption: '' }, { id: 'tacme', name: 'acme-app/', left: 497, caption: sel === 'project' ? 'their clone, once you commit the file' : 'their clone' }, { id: 'cacme', name: 'acme-app/', left: 704, caption: sel === 'project' ? 'fresh clone, once you commit the file' : sel === 'managed' ? 'server-managed only' : 'fresh clone' }]; const FILE_AT = { user: { machine: 'you', tiles: [] }, project: { machine: null, tiles: ['yacme', 'tacme', 'cacme'] }, local: { machine: null, tiles: ['yacme'] }, managed: { machine: null, tiles: [] } }; const fileAt = FILE_AT[sel]; const coverage = COVERAGE[sel]; const ring = RINGS[sel]; const selFile = FILES.find(f => f.id === sel); const FolderIcon = ({open}) => ; const FileIcon = () => ; const CloudIcon = () => ; const LaptopIcon = () => ; return <div ref={rootRef} className={'ssc-root not-prose' + (isFullscreen ? ' ssc-fs' : '')}>

  <div className="ssc-head">
    <div className="ssc-files" role="group" aria-label="Settings file">
      {FILES.map(f => <button key={f.id} type="button" className="ssc-file ssc-mono" aria-pressed={f.id === sel} onClick={() => setSel(f.id)}>{f.path}</button>)}
    </div>
    <button type="button" className="ssc-fsbtn" onClick={toggleFullscreen} aria-label={isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}>{isFullscreen ? '⤡' : '⛶'}</button>
  </div>

  <div ref={frameRef} className="ssc-frame" style={{
height: CANVAS_H * scale + 'px'

}}> <div className="ssc-canvas" style={{ transform: 'scale(' + scale + ')' }}> <div className="ssc-machine" style={{ left: '10px', width: '430px' }} /> <span className="ssc-machine-label" style={{ left: '30px' }}>Your machine{fileAt.machine === 'you' && {selFile.path}} <div className="ssc-machine" style={{ left: '460px', width: '200px' }} /> <span className="ssc-machine-label" style={{ left: '470px' }}>A teammate’s machine <div className="ssc-machine" style={{ left: '682px', width: '170px' }} /> <span className="ssc-machine-label" style={{ left: '692px' }}>A cloud session

      {TILES.map(t => {
const on = coverage.includes(t.id);
return <div key={t.id} className={'ssc-tile' + (on ? ' ssc-on' : '')} style={{
  left: t.left + 'px'
}}>
            <div className="ssc-tile-name"><FolderIcon open={on} /><span className="ssc-mono">{t.name}</span></div>
            {t.caption && <div className="ssc-tile-caption">{t.caption}</div>}
            {fileAt.tiles.includes(t.id) && <span className="ssc-filemark ssc-mono" title={SHORT[sel]}><FileIcon />{TILE_MARK[sel]}</span>}
          </div>;

})}

      <div className="ssc-ring" style={{
left: ring.l + 'px',
top: ring.t + 'px',
width: ring.w + 'px',
height: ring.h + 'px'

}} /> <span className="ssc-ring-label ssc-mono" style={{ left: ring.l + 14 + 'px', top: ring.t - 26 + 'px' }}>{selFile.ring || selFile.path}

; };

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

Claude Code читает параметры из файлов параметров JSON, таких как ~/.claude/settings.json. Он ищет их в нескольких местах, и файл, из которого он читает параметр, определяет, к кому применяется параметр. На этой странице рассматриваются эти файлы: в какой из них поместить параметр, как изменить параметр и подтвердить его применение, и какое значение Claude Code использует, когда один и тот же ключ установлен в более чем одном файле. Настройка разрешений охватывает то, что Claude Code может запустить без запроса, и как писать правила allow, ask и deny.

Файлы параметров и кого они затрагивают

Claude Code читает параметры из четырёх файлов, и организация также может доставлять управляемые параметры из консоли claude.ai. Каждый источник имеет область действия: набор людей и проектов, к которым применяется параметр, сохранённый в нём, будь то только вы, все в проекте или все в вашей организации.

Область действия Файл Кого это затрагивает Используйте для
Пользователь ~/.claude/settings.json Вас, в каждом проекте на этой машине Личные предпочтения: тема, режим редактора, модель по умолчанию, ваши собственные правила разрешений
Общий проект .claude/settings.json Всех, кто работает в папке, которая его содержит. В репозитории git зафиксируйте его, чтобы товарищи по команде его получили Разрешения команды, hooks, plugins и переменные окружения, которые нужны проекту
Локальный проект .claude/settings.local.json Вас, только в этом одном проекте. Claude Code исключает его из git при создании файла; если вы создадите его вручную, добавьте его в .gitignore сами Личные переопределения для одного проекта и тестирование перед тем, как вы поделитесь
Управляемый managed-settings.json и другие управляемые источники Всех, кому ваша организация его развёртывает; ничто из того, что вы установили, его не переопределяет, кроме нескольких исключений, чувствительных к безопасности Требования политики безопасности и соответствия

В столбце File ~/.claude — это папка .claude в вашем домашнем каталоге, а простой .claude — это папка .claude внутри вашего проекта.

Сравните область действия каждого файла параметров

Предположим, у вас есть три проекта на вашей машине: website/, api/ и acme-app/, товарищ по команде имеет свой собственный клон acme-app/, и вы запускаете облачный сеанс на acme-app/.

На графике ниже показано, в каких из этих папок применяется параметр при запуске Claude Code из них. Нажмите на файл параметров, чтобы увидеть папки, которые он охватывает.

  • ~/.claude/settings.json: каждый проект на вашей машине, и ничего на машине вашего товарища или в облачном сеансе
  • acme-app/.claude/settings.json: ваш acme-app/. Он охватывает клон вашего товарища и облачный сеанс только если вы зафиксируете файл в системе контроля версий; до этого это файл на вашем диске, как и любой другой, и никто другой его не имеет
  • acme-app/.claude/settings.local.json: только ваш acme-app/. Claude Code добавляет его в ваши глобальные исключения git при первом написании файла, поэтому он остаётся вне ваших коммитов; если вы создадите файл вручную, добавьте его в .gitignore сами
  • Управляемые параметры, будь то файл managed-settings.json, политика MDM или управляемые сервером параметры из консоли claude.ai: каждый проект на каждой машине, на которую ваша организация его развёртывает, или на которую вы входите с учётной записью вашей организации. Только управляемые сервером параметры охватывают облачный сеанс

Найдите или создайте ваши файлы параметров

Установка Claude Code не создаёт никакой файл параметров. Если на вашей машине или в проекте уже есть один, он пришёл из одного из этих источников:

  • Управляемый: ваша организация его развёртывает. Вы его не создаёте и не редактируете.
  • Общий проект: проект, который уже использует Claude Code, может иметь один зафиксированный. Если нет, создайте его в .claude/settings.json в папке проекта.
  • Пользователь и Локальный проект: создайте их сами или позвольте Claude Code их создать. Он записывает ~/.claude/settings.json при первом изменении опции в меню /config, которую он сохраняет в пользовательские параметры, такой как тема, и .claude/settings.local.json при первом предоставлении постоянного одобрения на запрос разрешения, такой как "Да, и больше не спрашивайте" для команды Bash. Несколько опций /config, включая Show tips, сохраняются в .claude/settings.local.json вместо файла пользователя.

Claude Code также хранит пятый файл, ~/.claude.json, который он записывает для себя; вам не нужно его редактировать. Он содержит вашу сессию входа, конфигурации MCP server, состояние для каждого проекта, такое как решения о доверии, и глобальные ключи конфигурации, которые /config записывает для вас.

Поделитесь параметрами с вашей командой

Зафиксируйте .claude/settings.json, чтобы все, кто клонирует репозиторий, получили одинаковые разрешения, hooks и plugins. Каждый товарищ по команде всё ещё может переопределить его для себя в своём собственном .claude/settings.local.json, поэтому личные исключения не нуждаются в коммите. Для полного файла команды см. общие параметры команды.

Некоторые из того, что вы зафиксируете, ждут, пока каждый товарищ по команде доверит папку, и несколько ключей никогда не вступают в силу из файла репозитория; Troubleshoot a setting that doesn't apply охватывает оба случая.

Держите личные параметры вне репозитория

Чтобы изменить параметр для себя в одном проекте без изменения его для товарищей по команде, сохраните его в .claude/settings.local.json внутри проекта. Claude Code применяет этот файл поверх зафиксированного .claude/settings.json, поэтому если файл вашей команды устанавливает "model": "claude-sonnet-5" и вы хотите Opus, поместите "model": "claude-opus-5-5" в ваш локальный файл и только ваши сеансы изменятся.

Claude Code также записывает в этот файл, держит его вне ваших коммитов и применяет его правила разрешений без шага доверия:

  • Claude Code также его записывает. Когда Claude просит разрешение запустить команду Bash и вы выбираете "Да, и больше не спрашивайте", Claude Code сохраняет это одобрение разрешения здесь как правило allow.
  • Вам не нужно его gitignore самостоятельно, если только вы не создали его вручную. При первом написании файла Claude Code в репозитории git, который его ещё не игнорирует, он добавляет **/.claude/settings.local.json в ваш глобальный файл исключений git, поэтому файл остаётся вне ваших коммитов в каждом репозитории. Этот файл — это core.excludesFile, когда ваша глобальная конфигурация git устанавливает его на абсолютный путь или путь с префиксом ~; в противном случае это $XDG_CONFIG_HOME/git/ignore, или ~/.config/git/ignore, когда XDG_CONFIG_HOME не установлен. Если вы создали файл вручную и Claude Code ещё не писал в него, добавьте его в .gitignore сами.
  • Его правила allow не ждут доверия, пока файл остаётся неотслеживаемым. Поскольку файл принадлежит вам, а не репозиторию, Claude Code применяет его правила allow без шага workspace trust, который он требует для зафиксированного файла. Если файл отслеживается git, шаг доверия применяется к нему также; см. When your local settings file needs trust.

Где Claude Code хранит локальный файл в репозитории git

Когда Claude просит разрешение запустить команду Bash и вы выбираете "Да, и больше не спрашивайте", Claude Code сохраняет это одобрение как правило allow в .claude/settings.local.json. Если вы запускаете Claude Code в подкаталоге репозитория git, он читает и записывает этот файл в корень репозитория и применяет одобрение по всему репозиторию. В worktree он использует файл в корне основного checkout.

Два правила уточняют расположение корня:

  • Когда файл остаётся с .claude/settings.json вместо этого: вне репозитория git, когда корень репозитория — это ваш домашний каталог, на Windows или когда корень репозитория или его запись .git или .claude не принадлежит вашему пользователю.
  • Пути в файле не привязаны к корню репозитория: правило разрешения, которое начинается с / или относительный путь sandbox привязывается к основному рабочему каталогу сеанса вместо этого.

До v2.1.211 Claude Code хранил файл в начальном каталоге. Он всё ещё читает файл, который более ранняя версия оставила там рядом с файлом корня; где оба устанавливают один и тот же ключ, применяется значение корня, и правила разрешений из обоих файлов применяются. Помощник Agent SDK resolveSettings() всегда читает файл из начального каталога.

Claude Code читает общий .claude/settings.json из основного рабочего каталога сеанса, поэтому для использования файла, зафиксированного в корне репозитория, запустите Claude Code там. После того как вы переместите сеанс с /cd, Claude Code читает оба файла проекта из нового каталога вместо этого, размещая локальный файл по тем же правилам. Чтение их из каталога, в который вы переместились, требует Claude Code v2.1.246 или позже.

Проверьте, что ваша организация требует

Если ваша организация управляет Claude Code, некоторые параметры решены за вас и ничто из того, что вы поместили в ваши собственные файлы, их не изменяет. Чтобы увидеть, какие, запустите /status: строка Setting sources называет управляемый источник, который применяется к вам. Управляемые параметры применяются везде, где Claude Code работает на этой машине; What a developer can change охватывает права локального администратора и инструменты, отличные от Claude Code.

Управляемые параметры достигают вас через механизмы доставки на странице управляемых параметров, чаще всего:

  • Server-managed settings, которые Claude Code получает из консоли администратора claude.ai или самостоятельно размещённого Claude apps gateway
  • Политики MDM или уровня ОС и файлы managed-settings.json в системном каталоге
  • Хост встраивания, такой как Claude Desktop, через опцию SDK managedSettings; см. Control policy from an embedding host

В сеансе Cowork, который работает на вашей машине в приложении Claude Desktop, Claude Code не получает управляемые сервером параметры из консоли администратора claude.ai и читает политику, развёрнутую на вашем устройстве, если конфигурация Claude Desktop вашей организации не устанавливает requireCoworkFullVmSandbox. Where and when a policy applies охватывает Cowork и облачные сеансы.

Если вы администратор, Set up Claude Code for your organization проходит через выбор того, что требуется применить, и Deploy managed settings охватывает доставку и как подтвердить, что политика действует.

Измените параметр

Вы можете изменить параметр из меню /config, редактируя файл параметров или для одного сеанса из командной строки.

Системный запрос Claude Code не опубликован. Чтобы дать Claude постоянные инструкции, используйте файлы CLAUDE.md или флаг --append-system-prompt.

Используйте меню /config

Запустите /config внутри Claude Code и откройте вкладку Config. Она перечисляет короткий набор личных опций, таких как тема, режим редактора и подробный вывод, не каждый ключ параметров. Выберите опцию для ее изменения; Claude Code сохраняет ее для вас:

Чтобы установить одну опцию без меню, передайте key=value, такой как /config verbose=true.

Отредактируйте файл параметров

Откройте файл параметров для области, которую вы хотите, в вашем редакторе и добавьте или измените ключ. Файлы параметров — это строгий JSON: комментарий // или запятая в конце — это синтаксическая ошибка, и Claude Code сообщает файл как Settings Error при следующем запуске. Например, чтобы позволить Claude Code запускать ваши команды lint и test без запроса и остановить его чтение файлов .env, добавьте это в ~/.claude/settings.json:

{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test *)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)"
    ]
  }
}

Каждая запись под permissions — это правило, которое называет инструмент и что он может делать; Настройка разрешений объясняет синтаксис. Строка $schema указывает на опубликованную JSON схему для параметров Claude Code, которая дает вам автодополнение и встроенную валидацию в VS Code, Cursor и любом другом редакторе, поддерживающем JSON схему. Схема может отставать от самых новых выпусков CLI, поэтому предупреждение валидации на недавно задокументированном ключе не означает, что ваша конфигурация недействительна.

После сохранения запустите /status внутри Claude Code, чтобы подтвердить, что файл загружен; Подтвердите, что загружено говорит, что показывает строка Setting sources и как сообщается о сломанном файле.

Для полного личного файла, файла команды и файла организации, каждый показан с комментарием на каждом ключе, который он устанавливает, см. примеры файлов параметров.

Измените параметр для одного сеанса

Чтобы попробовать значение без сохранения, установите его при запуске Claude Code. Значение применяется к этому сеансу, и ваши файлы параметров остаются такими, какими они были. У вас есть три способа это сделать:

  • --settings: передайте ключ как JSON, встроенный или как путь к файлу. Claude Code применяет его выше ваших файлов пользователя, проекта и локальных и ниже управляемых параметров. Он может установить любой ключ, который может установить ваш файл параметров пользователя; он не может установить ключи Managed или Global config.
  • Флаг для этого ключа: некоторые ключи имеют свой собственный флаг, такой как --model для model и --effort для effortLevel и modelSettings.
  • Переменная окружения: экспортируйте переменную ключа перед запуском claude, такую как ANTHROPIC_MODEL для model.

Каждая запись ключа на справочнике параметров перечисляет его переопределения для каждого сеанса и какой имеет приоритет, поэтому проверьте запись для ключа, который вы хотите изменить.

Команды, которые вы запускаете внутри сеанса, в основном сохраняют ваш выбор: когда вы изменяете параметр в /config, Claude Code записывает его в ваши файлы параметров, и /model сохраняет значение как ваше значение по умолчанию для новых сеансов.

Если вы нажмете s в средстве выбора /model, Claude Code переключает модель без сохранения ее как вашего пользовательского значения по умолчанию. Отрегулируйте уровень усилий говорит, какие выборы /effort Claude Code сохраняет как ваше значение по умолчанию для модели, которую вы используете, и какие применяются только к текущему сеансу.

Например, чтобы запустить один сеанс на Opus без изменения вашего значения по умолчанию:

claude --settings '{"model": "claude-opus-5-5"}'

Когда изменения вступают в силу

Claude Code отслеживает ваши файлы параметров и перезагружает их при изменении, поэтому он применяет большинство изменений к работающему сеансу без перезагрузки, включая изменения permissions, hooks и помощников учетных данных, таких как apiKeyHelper. Claude Code также загружает файл параметров, который вы создаете в середине сеанса, если его папка существовала при запуске сеанса. Для папки .claude/ проекта он загружает файл даже когда вы создаете папку в том же сеансе.

Перезагрузка охватывает параметры пользователя, проекта, локальные и управляемые параметры, и Claude Code запускает hook ConfigChange для каждого изменения файла параметров, которое он обнаруживает, не для управляемых параметров, которые поступают из MDM или консоли claude.ai. Управляемые параметры, которые поступают через MDM или из консоли claude.ai, достигают работающего сеанса по расписанию, а не при сохранении; таблица доставки дает это для каждого источника.

Claude Code читает некоторые ключи только один раз при запуске сеанса, поэтому изменение одного из них не достигает работающего сеанса. Ключи на стороне администратора, которые также ждут перезагрузки, такие как requiredMinimumVersion, перечислены в где и когда применяется политика. Те, которые вы, скорее всего, будете редактировать в середине сеанса:

  • model: используйте /model для переключения в середине сеанса. Каждая модель имеет свой собственный кэш подсказок, поэтому первый запрос после переключения повторно читает весь разговор без кэша; см. Переключение моделей
  • effortLevel и modelSettings: используйте /effort для изменения усилий в середине сеанса

Подтвердите, что загружено

Запустите /status внутри Claude Code, чтобы увидеть, какие источники параметров активны. Вкладка Status включает строку Setting sources, которая перечисляет каждый файл параметров, который Claude Code загрузил для текущего сеанса, такой как User settings или Project local settings. Когда управляемые параметры действуют, запись управляемых параметров показывает в скобках, как они достигли вашей машины.

Строка подтверждает, какие файлы Claude Code прочитал; она не показывает, какой файл предоставил каждый ключ. Чтобы перечислить записи, которые Claude Code отклонил, запустите claude doctor; для модели, которую установили параметры проекта или управляемые параметры, заголовок запуска называет файл, который ее установил. /status и /config открывают один и тот же диалог на разных вкладках, и вкладка Config не является представлением содержимого вашего settings.json.

Исправьте сломанный файл параметров

Если вы неправильно напечатаете JSON или установите ключ на значение, которое Claude Code не принимает, Claude Code сообщит вам при запуске интерактивного сеанса. То, что он показывает, зависит от того, сколько файла затронуто:

  • Settings Error: файл пользователя, проекта или локальный имеет недействительный JSON или значение, которое схема отклоняет. При запуске интерактивного сеанса Claude Code показывает диалог, который позволяет вам исправить файл с помощью Claude, выйти или продолжить без сломанных параметров.
  • Settings Warning: только отдельные записи не удаются, такие как неправильное правило разрешения или неизвестное имя события hook. Claude Code пропускает эти значения и держит остальную часть файла в силе.
  • Managed settings: Claude Code продолжает применять остальную часть файла. Недействительные записи в управляемых параметрах говорит, что он отбрасывает и какие ключи возвращаются к более строгому значению, пока вы их не исправите. Для документа управляемых параметров, который не является действительным JSON, см. Документ управляемых параметров не может быть разобран.
  • Configuration error: ~/.claude.json не может быть разобран. Claude Code копирует сломанный файл в ~/.claude/backups/.claude.json.corrupted.<timestamp> и спрашивает, выйти и исправить его вручную или сбросить на конфигурацию по умолчанию; запуск -p выводит ошибку и выходит. Чтобы восстановить ваше предыдущее состояние, скопируйте обратно один из пяти самых последних файлов .claude.json.backup.<timestamp> в ~/.claude/backups/, которые Claude Code сохраняет перед записью файла.

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

Запуск -p не показывает диалог. Если только документ управляемых параметров не может быть разобран, Claude Code пропускает сломанный файл или значения и продолжает с остальным, поэтому после запуска -p, который игнорирует параметр, запустите claude doctor, чтобы увидеть, что он отбросил.

Приоритет параметров

Когда один и тот же ключ появляется в нескольких местах, Claude Code использует значение из наивысшего уровня, который его устанавливает. Стек ниже показывает уровни, наивысший вверху; ключ на более высоком уровне переопределяет тот же ключ где-либо ниже.

По порядку, наивысший приоритет первым:

  1. Управляемые параметры: параметры, которые ваша организация развертывает через файл managed-settings.json, политику MDM или параметры, управляемые сервером из консоли claude.ai. Ничто из того, что вы устанавливаете, их не переопределяет: ключ, который вы передаете с --settings, не переопределяет тот же управляемый ключ, и флаг, такой как --model, выбирает только из моделей, которые разрешает ваша организация. Управляемый model устанавливает модель, с которой начинается каждая сессия, и вы все еще можете переключаться с помощью /model; блокировка — это availableModels, которая ограничивает /model, --model и ключ model в ваших собственных файлах. Когда ваша организация предоставляет более одного управляемого источника, правила для приоритета в пределах управляемого уровня указывают, что Claude Code читает из каждого.
  2. Аргументы командной строки: флаги, которые вы передаете при запуске claude из терминала, для одной сессии; см. Изменить параметр для одной сессии. Claude Code объединяет JSON, который вы передаете с --settings <file-or-json>, с вашими файлами параметров по тем же правилам, что и другие уровни: он берет ключ, который вы устанавливаете здесь, над тем же ключом в локальных, проектных или пользовательских параметрах, и сохраняет значение более низкого уровня для ключа, который вы опускаете.
  3. Локальные параметры проекта (.claude/settings.local.json): ваши личные параметры для этого проекта.
  4. Общие параметры проекта (.claude/settings.json): параметры, которые ваша команда проверяет в систему управления версиями.
  5. Пользовательские параметры (~/.claude/settings.json): ваши личные параметры для каждого проекта.

Переменные окружения не являются уровнем в этом стеке. Когда поведение имеет как переменную оболочки, так и ключ параметров, какой из них применяется, решается для каждой пары отдельно, а не по уровню: ANTHROPIC_MODEL, экспортированная в вашей оболочке, применяется над ключом model из любого файла, в то время как ANTHROPIC_DEFAULT_MODEL применяется только когда ни один файл не устанавливает model. Справочник переменных окружения указывает, какие ключи имеют пару и какой из них Claude Code читает первым. Блок env внутри файла параметров — это обычный ключ и следует уровням выше.

Для нескольких ключей, чувствительных к безопасности, Claude Code соблюдает более строгое значение из более низкого уровня над управляемым значением; Исключения из приоритета управляемых параметров их перечисляет.

Списки объединяются вместо переопределения

Когда вы устанавливаете один и тот же ключ списка, такой как permissions.allow, в более чем одном файле, Claude Code объединяет списки вместо выбора одного, поэтому каждый файл может добавлять записи без удаления записей другого файла. Четыре ключа, которые содержат списки моделей или записи для каждой модели, следуют своим собственным правилам:

  • fallbackModel — это упорядоченная цепь, где позиция имеет значение, поэтому Claude Code берет все значение из файла с наивысшим приоритетом, который его определяет.
  • modelPicker содержит один упорядоченный список строк плюс флаг замены, поэтому Claude Code никогда не объединяет строки из двух источников. Он берет все значение из наивысшего из управляемых параметров, --settings и пользовательских параметров, которые его определяют, и игнорирует ключ в проектных и локальных параметрах. Требует Claude Code v2.1.242 или позже.
  • availableModels: когда применяемые управляемые параметры Claude Code его определяют, Claude Code применяет этот список как есть и игнорирует записи, которые вы добавляете в пользовательские, проектные или локальные параметры, если только приложение, которое встраивает Claude Code, не предоставляет свой собственный список моделей; см. Исключения из приоритета управляемых параметров. Во всех управляемых источниках список также никогда не объединяется; как Claude Code объединяет управляемые источники указывает, какой список источника применяется. Во всех неуправляемых областях Claude Code объединяет массивы как обычно.
  • modelSettings: Claude Code разрешает его одну модель за раз, вместе с effortLevel. Запись modelSettings указывает, какое значение файла применяется к модели.

Примеры приоритета

Пока Claude работает, Claude Code показывает подсказку в одну строку под спиннером, например "Используйте /config для изменения режима разрешений по умолчанию (включая Plan Mode)". Предположим, вы хотите отключить эти подсказки, поэтому вы устанавливаете spinnerTipsEnabled в false в ~/.claude/settings.json. Каждый сценарий ниже — это что-то, что может их снова включить, и что вы можете с этим сделать.

Параметры команды переопределяют личные параметры

Параметры .claude/settings.json вашей команды устанавливают это в true. Claude Code использует значение проекта, потому что общие параметры проекта находятся выше пользовательских, поэтому вы видите подсказки в этом проекте и больше нигде.

Вы можете вернуть свое значение: добавьте "spinnerTipsEnabled": false в .claude/settings.local.json в этом проекте. Локальные параметры проекта находятся выше общих параметров проекта, поэтому ваши сессии там перестанут показывать подсказки, а сессии ваших товарищей по команде не изменятся.

Параметры организации переопределяют все

Управляемые параметры вашей организации устанавливают это в true. Ничто из того, что вы поместите в пользовательские, проектные или локальные параметры, не отключит подсказки, и --settings тоже не отключит. Управляемые параметры — это наивысший уровень.

Вы не можете вернуть свое значение. Запустите /status, чтобы увидеть, какой управляемый источник применяется, и попросите вашего администратора изменить политику.

Командная строка переопределяет ваши файлы для одной сессии

Вы запустили сессию с claude --settings '{"spinnerTipsEnabled": true}'. Командная строка находится выше каждого файла, кроме управляемых, поэтому эта сессия показывает подсказки, даже если ваши файлы говорят false.

Вы получите свое значение обратно в следующей сессии; --settings длится одну сессию и не записывает в какой-либо файл.

Флаг или переменная окружения устанавливает то же самое

Некоторые ключи имеют флаг командной строки или переменную окружения, которая переопределяет значение параметров независимо от того, какой файл его установил: ANTHROPIC_MODEL переопределяет параметр model, а --model переопределяет оба для сессии.

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

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

Когда вы устанавливаете ключ и Claude Code не ведет себя так, как если бы вы это сделали, начните с /status, чтобы увидеть, какие файлы он загрузил, затем найдите ваш симптом ниже. Отладка вашей конфигурации охватывает более широкие проверки, включая тест чистой конфигурации.

Значение, которое вы установили, игнорируется

Что-то еще устанавливает тот же ключ, файл не может установить это значение, или файл не загрузился:

  • Более высокий уровень его устанавливает. Другой файл параметров, флаг --settings или управляемый источник устанавливает ключ выше вашего; стек указывает, какой. Флаг или переменная окружения также может переопределить ключ самостоятельно, решаемый ключ за ключом; запись ключа на справочнике параметров указывает, какой из них использует Claude Code, и запись env охватывает управляемое значение env в сравнении с экспортом оболочки.

  • Ключ безопасности сохраняет свое строгое значение. Для нескольких ключей Claude Code соблюдает ограничивающее значение из любого файла, поэтому проектный true для disableClaudeAiConnectors остается включенным; см. Исключения из приоритета управляемых параметров.

  • Файл не может установить это значение. Значения permissions.defaultMode auto и bypassPermissions не вступают в силу из проектных или локальных параметров; установите их в пользовательские или управляемые параметры вместо этого, или передайте --permission-mode для одной сессии. До v2.1.257 bypassPermissions вступал в силу из любого файла.

    Переменная экспорта телеметрии в блоке env также не вступает в силу из проектных или локальных параметров, кроме нескольких отключенных значений. Переменные, которые Claude Code игнорирует в env перечисляет переменные и эти значения.

  • Файл сломан. Неверный JSON или отклоненное значение заставляет Claude Code пропустить файл или запись; см. Исправить сломанный файл параметров.

Изменение, которое вы сделали в Claude Code, теряется в новых сессиях

Когда вы сохраняете выбор для новых сессий из Claude Code, например модель по умолчанию с /model, Claude Code записывает это в ваш файл пользовательских параметров, ~/.claude/settings.json. Если вы не можете писать в этот файл, например потому что другой инструмент его генерирует или связывает его с копией только для чтения, изменение применяется к текущей сессии и исчезает в следующей. Установите ключ в инструменте, который генерирует файл, или замените файл на тот, в который вы можете писать.

Если вы можете писать в файл и изменение все еще не сохраняется, проверьте, было ли изменение только для одной сессии или более высокий уровень устанавливает тот же ключ. Для ключа model Новая сессия начинается с другой модели, чем вы выбрали перечисляет больше причин.

Управляемое изменение не достигло вас

Управляемые источники достигают работающей сессии по расписанию в таблице доставки, поэтому сначала перезагрузите сессию. Если /status затем называет другой источник, чем тот, который изменил ваш администратор, применяется источник с более высоким приоритетом; Как Claude Code объединяет управляемые источники дает порядок.

Зафиксированный ключ не достигает товарищей по команде

Две вещи не позволяют ключу в .claude/settings.json применяться для всех, кто его клонирует:

  • Claude Code игнорирует ключ в файле репозитория. Ищите User, local, or managed, User or managed, Managed или Global config в столбце Scope индекса параметров. Эти ключи никогда не применяются из общего файла, кроме нескольких, которые файл репозитория все еще может отключить. Каждая из этих записей говорит об этом на строке Scope. Ключи Global config применяются только из ~/.claude.json.

    Внутри ключа env переменные экспорта телеметрии также никогда не применяются из общего файла, кроме нескольких отключенных значений; см. Переменные, которые Claude Code игнорирует в env.

  • Ключ ждет доверия. Правила permissions.allow, permissions.additionalDirectories, extraKnownMarketplaces и большинство значений env применяются только после того, как каждый товарищ по команде доверяет папке. До этого они все еще видят подсказки и не получают плагины с маркетплейса, который объявляет файл. Правила deny и ask применяются сразу же.

Правила разрешений объединяются иначе, чем вы ожидали

  • Вы выбрали "Да, и больше не спрашивайте" в подсказке разрешения, но все еще получаете подсказку для того же инструмента. Этот выбор сохранил правило allow в ваш локальный файл, и правило allow там не превосходит правило ask из проектного или управляемого файла; как правила разрешений объединяются объясняет порядок. В расширении VS Code карточка одобрения позволяет вам выбрать файл назначения, включая общий файл проекта, что изменяет правило для всех; в CLI Claude Code пишет только в ваш локальный файл.
  • Правила разрешения вашей организации все еще применяются наряду с вашими. Это ожидаемо: Claude Code объединяет permissions.allow во всех областях, если только ваша организация не устанавливает allowManagedPermissionRulesOnly.

Исключения из приоритета управляемых параметров

Для нескольких ключей, значения которых ограничивают сессию, Claude Code соблюдает ограничивающее значение из области, которая в противном случае не могла бы переопределить управляемые параметры. Найдите ключ в этой таблице, чтобы увидеть, какое значение он соблюдает и откуда.

Ключ Значение, которое соблюдает Claude Code Примечания
disableClaudeAiConnectors true из любой области Соблюдается даже когда управляемый источник устанавливает false
enableArtifact false из любой области и disableArtifact: true из любой области Соблюдается даже когда управляемый источник устанавливает true; ничто не включает инструмент Artifact обратно. Требует Claude Code v2.1.242 или позже
isolatePeerMachines true из любой области Соблюдается даже когда управляемый источник устанавливает false
remoteControlAtStartup false из .claude/settings.json или .claude/settings.local.json Соблюдается даже когда управляемый источник устанавливает true; проектный или локальный true игнорируется
crossSessionInbound Более строгое значение из .claude/settings.json или .claude/settings.local.json, на лестнице accept < hold < refuse Соблюдается над управляемыми, --settings и пользовательскими значениями; проектное или локальное значение, которое не является более строгим, игнорируется
useAutoModeDuringPlan false из любого управляемого источника, --settings, ~/.claude/settings.json или .claude/settings.local.json Соблюдается даже когда выигрывающий управляемый источник устанавливает true; false в .claude/settings.json игнорируется
syncClaudeAiSkills false из любого управляемого источника, --settings, ~/.claude/settings.json или .claude/settings.local.json Соблюдается даже когда выигрывающий управляемый источник устанавливает true; false в .claude/settings.json игнорируется
syncClaudeAiPlugins false из любого управляемого источника, --settings, ~/.claude/settings.json или .claude/settings.local.json Соблюдается даже когда выигрывающий управляемый источник устанавливает true; false в .claude/settings.json игнорируется
maxEffortLevel Более низкий предел из любой области, включая --settings Соблюдается даже когда применяемые управляемые параметры Claude Code устанавливают более высокий предел; применяется самый низкий предел. Требует Claude Code v2.1.267 или позже

Приложение, которое запускает Claude Code внутри себя и устанавливает CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST, также является исключением. Claude Code берет конфигурацию модели этого приложения над ключами model, fallbackModel, modelPicker и modelOverrides из каждого управляемого источника, и над переменными выбора модели в управляемом блоке env, такими как ANTHROPIC_MODEL и семейство ANTHROPIC_DEFAULT_*_MODEL. Claude Code сохраняет управляемый список разрешений availableModels в силе, если только приложение не предоставляет свой собственный.

Параметры в облачных сеансах

Облачный сеанс работает в облачной среде на свежем клоне вашего репозитория, не на вашей машине. Это изменяет, какие параметры его достигают:

  • Общие параметры проекта (.claude/settings.json): читаются в сеансе с одним репозиторием, потому что файл является частью клона и сеанс начинается внутри него. Зафиксируйте параметр там, чтобы применить его в этих сеансах. Сеанс с несколькими репозиториями начинается выше клонов и читает только ключи enabledPlugins и extraKnownMarketplaces из файла .claude/settings.json каждого репозитория, но не правила разрешений, hooks, env или другие ключи. Маркетплейсы и плагины, которые эти два ключа объявляют, по-прежнему не загружаются в облачном сеансе.
  • Параметры пользователя и локальные параметры проекта (~/.claude/settings.json и .claude/settings.local.json): не читаются. Оба остаются на вашей машине, и локальный файл не находится в клоне.
  • Managed settings: только параметры, управляемые сервером достигают облачного сеанса; файл managed-settings.json или профиль MDM на вашем устройстве не достигают. Самостоятельно размещенная среда также читает файл управляемых параметров в образе своего runner. Как Claude Code объединяет управляемые источники говорит, когда этот файл применяется.
  • /config: в вашем браузере на claude.ai/code открывает раздел Claude Code ваших параметров claude.ai вместо изменения значения. Чтобы изменить параметр для облачного сеанса, установите переменную окружения в среде или в сеансе с одним репозиторием зафиксируйте ключ в файле .claude/settings.json этого репозитория.

Что переносится из вашей установки перечисляет остальное: CLAUDE.md, skills, MCP servers, plugins и учетные данные.

Что дальше