6 6
7> 變更 Claude Code 設定、選擇金鑰所屬的範圍、驗證變更,並了解當金鑰在多個位置設定時 Claude Code 使用哪個值。7> 變更 Claude Code 設定、選擇金鑰所屬的範圍、驗證變更,並了解當金鑰在多個位置設定時 Claude Code 使用哪個值。
8 8
9export const SettingsPrecedence = () => {
10 const LEVELS = [{
11 n: 1,
12 name: 'Managed settings',
13 file: 'managed-settings.json, MDM, or the claude.ai console',
14 who: 'Your organization',
15 w: 390
16 }, {
17 n: 2,
18 name: 'Command line',
19 file: 'claude --settings',
20 who: 'You, this session',
21 w: 420
22 }, {
23 n: 3,
24 name: 'Project local',
25 file: '.claude/settings.local.json',
26 who: 'You, this project',
27 w: 480
28 }, {
29 n: 4,
30 name: 'Shared project',
31 file: '.claude/settings.json',
32 who: 'Everyone in the project',
33 w: 540
34 }, {
35 n: 5,
36 name: 'User',
37 file: '~/.claude/settings.json',
38 who: 'You, every project',
39 w: 600
40 }];
41 const W = 760;
42 const ROW = 58;
43 const GAP = 8;
44 const TOP = 34;
45 const H = TOP + LEVELS.length * (ROW + GAP) + 30;
46 const cx = W / 2;
47 const mono = 'var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace)';
48 const sans = 'var(--font-sans, system-ui, -apple-system, sans-serif)';
49 return <div className="sp-root not-prose" role="img" aria-label="Settings precedence, highest first: managed settings, command line, project local, shared project, user. A key set at a higher level overrides the same key set lower down.">
50 <style>{`
51 .sp-root { --sp-text: #1A1918; --sp-sub: #5E5D59; --sp-faint: #8A8880; --sp-fill: #F5F4EF; --sp-stroke: rgba(0,0,0,0.12); --sp-top: #D97757; --sp-top-fill: rgba(217,119,87,0.14); --sp-arrow: #8A8880; margin: 1.25rem 0; }
52 .dark .sp-root { --sp-text: #F1EFE9; --sp-sub: #B8B5AD; --sp-faint: #8A8880; --sp-fill: #24231F; --sp-stroke: rgba(255,255,255,0.12); --sp-top-fill: rgba(217,119,87,0.22); --sp-arrow: #8A8880; }
53 .sp-root svg { width: 100%; height: auto; display: block; max-width: ${W}px; margin: 0 auto; }
54 `}</style>
55 <svg viewBox={`0 0 ${W} ${H}`} xmlns="http://www.w3.org/2000/svg">
56 <text x={cx} y={18} textAnchor="middle" fontFamily={sans} fontSize="12.5" fontWeight="600" fill="var(--sp-sub)">Highest precedence</text>
57 {LEVELS.map((l, i) => {
58 const y = TOP + i * (ROW + GAP);
59 const x = cx - l.w / 2;
60 const top = i === 0;
61 return <g key={l.n}>
62 <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} />
63 <text x={x + 14} y={y + 24} fontFamily={sans} fontSize="14" fontWeight="600" fill="var(--sp-text)">{l.n}. {l.name}</text>
64 <text x={x + 14} y={y + 43} fontFamily={mono} fontSize="11.5" fill="var(--sp-sub)">{l.file}</text>
65 <text x={x + l.w - 14} y={y + 24} textAnchor="end" fontFamily={sans} fontSize="12" fill="var(--sp-faint)">{l.who}</text>
66 </g>;
67 })}
68 <text x={cx} y={H - 10} textAnchor="middle" fontFamily={sans} fontSize="12.5" fontWeight="600" fill="var(--sp-sub)">Lowest precedence</text>
69 <g stroke="var(--sp-arrow)" strokeWidth="1.5" fill="none">
70 <line x1={W - 40} y1={TOP + 10} x2={W - 40} y2={H - 38} />
71 <path d={`M ${W - 46} ${TOP + 18} L ${W - 40} ${TOP + 10} L ${W - 34} ${TOP + 18}`} />
72 </g>
73 <text x={W - 40} y={H - 22} textAnchor="middle" fontFamily={sans} fontSize="10.5" fill="var(--sp-faint)">overrides</text>
74 </svg>
75 </div>;
76};
77
78export const SettingsScope = ({defaultSelected = 'project'}) => {
79 const FILES = [{
80 id: 'user',
81 path: '~/.claude/settings.json'
82 }, {
83 id: 'project',
84 path: 'acme-app/.claude/settings.json'
85 }, {
86 id: 'local',
87 path: 'acme-app/.claude/settings.local.json'
88 }, {
89 id: 'managed',
90 path: 'Managed settings',
91 ring: 'managed-settings.json, MDM, or the claude.ai console'
92 }];
93 const SHORT = {
94 user: '~/.claude/settings.json',
95 project: 'acme-app/.claude/settings.json',
96 local: 'acme-app/.claude/settings.local.json',
97 managed: 'managed-settings.json, MDM, or the claude.ai console'
98 };
99 const TILE_MARK = {
100 project: 'settings.json',
101 local: 'settings.local.json'
102 };
103 const initial = FILES.some(f => f.id === defaultSelected) ? defaultSelected : 'project';
104 const [sel, setSel] = useState(initial);
105 const [scale, setScale] = useState(1);
106 const [isFullscreen, setIsFullscreen] = useState(false);
107 const rootRef = useRef(null);
108 const frameRef = useRef(null);
109 const CANVAS_W = 862;
110 const CANVAS_H = 240;
111 useEffect(() => {
112 const el = frameRef.current;
113 if (!el) return;
114 const measure = () => setScale(Math.min(1, el.clientWidth / CANVAS_W));
115 measure();
116 if (typeof ResizeObserver === 'undefined') {
117 window.addEventListener('resize', measure);
118 return () => window.removeEventListener('resize', measure);
119 }
120 const ro = new ResizeObserver(measure);
121 ro.observe(el);
122 return () => ro.disconnect();
123 }, []);
124 useEffect(() => {
125 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);
126 document.addEventListener('fullscreenchange', onFsChange);
127 return () => document.removeEventListener('fullscreenchange', onFsChange);
128 }, []);
129 const toggleFullscreen = () => {
130 if (!rootRef.current) return;
131 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});
132 };
133 const COVERAGE = {
134 user: ['website', 'api', 'yacme'],
135 project: ['yacme', 'tacme', 'cacme'],
136 local: ['yacme'],
137 managed: ['website', 'api', 'yacme', 'tacme', 'cacme']
138 };
139 const RINGS = {
140 local: {
141 l: 282,
142 t: 50,
143 w: 142,
144 h: 124
145 },
146 project: {
147 l: 282,
148 t: 50,
149 w: 560,
150 h: 124
151 },
152 user: {
153 l: 2,
154 t: 34,
155 w: 446,
156 h: 198
157 },
158 managed: {
159 l: 0,
160 t: 32,
161 w: 862,
162 h: 204
163 }
164 };
165 const TILES = [{
166 id: 'website',
167 name: 'website/',
168 left: 30,
169 caption: ''
170 }, {
171 id: 'api',
172 name: 'api/',
173 left: 160,
174 caption: ''
175 }, {
176 id: 'yacme',
177 name: 'acme-app/',
178 left: 290,
179 caption: ''
180 }, {
181 id: 'tacme',
182 name: 'acme-app/',
183 left: 497,
184 caption: sel === 'project' ? 'their clone, once you commit the file' : 'their clone'
185 }, {
186 id: 'cacme',
187 name: 'acme-app/',
188 left: 704,
189 caption: sel === 'project' ? 'fresh clone, once you commit the file' : sel === 'managed' ? 'server-managed only' : 'fresh clone'
190 }];
191 const FILE_AT = {
192 user: {
193 machine: 'you',
194 tiles: []
195 },
196 project: {
197 machine: null,
198 tiles: ['yacme', 'tacme', 'cacme']
199 },
200 local: {
201 machine: null,
202 tiles: ['yacme']
203 },
204 managed: {
205 machine: null,
206 tiles: []
207 }
208 };
209 const fileAt = FILE_AT[sel];
210 const coverage = COVERAGE[sel];
211 const ring = RINGS[sel];
212 const selFile = FILES.find(f => f.id === sel);
213 const FolderIcon = ({open}) => <svg width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">
214 <path d="M1.5 4.5a1 1 0 0 1 1-1h3.2l1.3 1.5h6a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1h-10.5a1 1 0 0 1-1-1z" />
215 {open && <path d="M1.5 7.5h13" />}
216 </svg>;
217 const FileIcon = () => <svg width="10" height="10" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">
218 <path d="M4 1.5h5.5L13 5v9.5H4z" />
219 <path d="M9.5 1.5V5H13" />
220 </svg>;
221 const CloudIcon = () => <svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">
222 <path d="M4.5 12.5h7a2.5 2.5 0 0 0 .4-4.97A3.5 3.5 0 0 0 5.2 6.6 3 3 0 0 0 4.5 12.5z" />
223 </svg>;
224 const LaptopIcon = () => <svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">
225 <rect x="2.5" y="3" width="11" height="7.5" rx="1" />
226 <path d="M1 12.5h14" />
227 </svg>;
228 return <div ref={rootRef} className={'ssc-root not-prose' + (isFullscreen ? ' ssc-fs' : '')}>
229 <style>{`
230 .ssc-root {
231 --ssc-bg: #FFFFFF;
232 --ssc-text: #1A1918;
233 --ssc-sub: #5E5D59;
234 --ssc-faint: #8A8880;
235 --ssc-border: rgba(0,0,0,0.12);
236 --ssc-panel: #F5F4EF;
237 --ssc-tile: #FAFAF8;
238 --ssc-clay: #D97757;
239 --ssc-clay-bg: rgba(217,119,87,0.14);
240 --ssc-label: #B0562F;
241 --ssc-hover: rgba(115,114,108,0.10);
242 font-family: var(--font-sans, system-ui, -apple-system, sans-serif);
243 background: var(--ssc-bg);
244 color: var(--ssc-text);
245 border: 1px solid var(--ssc-border);
246 border-radius: 16px;
247 padding: 20px 24px 24px;
248 margin: 1.5rem 0;
249 box-sizing: border-box;
250 }
251 .dark .ssc-root {
252 --ssc-bg: #1B1A18;
253 --ssc-text: #F1EFE9;
254 --ssc-sub: #B8B5AD;
255 --ssc-faint: #8A8880;
256 --ssc-border: rgba(255,255,255,0.12);
257 --ssc-panel: #24231F;
258 --ssc-tile: #2A2925;
259 --ssc-clay-bg: rgba(217,119,87,0.20);
260 --ssc-label: #EBC9B7;
261 }
262 .ssc-fs { display: flex; flex-direction: column; justify-content: center; align-items: center; margin: 0; border-radius: 0; height: 100vh; }
263 .ssc-fs .ssc-head { width: 100%; max-width: ${CANVAS_W}px; }
264 .ssc-fs .ssc-frame { width: 100%; }
265 .ssc-mono { font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace); }
266 .ssc-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 20px; }
267 .ssc-files { display: flex; gap: 8px; flex-wrap: wrap; }
268 .ssc-file {
269 font-size: 12.5px; font-weight: 430; padding: 8px 13px; border-radius: 10px; cursor: pointer;
270 border: 0.5px solid var(--ssc-border); background: var(--ssc-tile); color: var(--ssc-text);
271 white-space: nowrap; transition: background 0.2s, border-color 0.2s;
272 }
273 .ssc-file:hover { filter: brightness(0.97); }
274 .ssc-file[aria-pressed="true"] { font-weight: 600; border: 1.5px solid var(--ssc-clay); background: var(--ssc-clay-bg); }
275 .ssc-fsbtn {
276 display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; flex-shrink: 0;
277 border: none; background: none; border-radius: 6px; cursor: pointer; color: var(--ssc-faint); font-size: 15px;
278 }
279 .ssc-fsbtn:hover { background: var(--ssc-hover); }
280 .ssc-frame { width: 100%; max-width: ${CANVAS_W}px; margin: 0 auto; }
281 .ssc-canvas { position: relative; width: ${CANVAS_W}px; height: ${CANVAS_H}px; transform-origin: top left; }
282 .ssc-machine { position: absolute; top: 42px; height: 182px; background: var(--ssc-panel); border-radius: 16px; }
283 .ssc-machine-label { position: absolute; top: 192px; display: flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: 600; }
284 .ssc-tile {
285 position: absolute; top: 58px; width: 126px; height: 108px; border-radius: 12px; padding: 11px 12px; box-sizing: border-box;
286 background: var(--ssc-tile); border: 0.5px solid var(--ssc-border); opacity: 0.6;
287 transition: background 0.25s, border-color 0.25s, opacity 0.25s;
288 }
289 .ssc-tile.ssc-on { background: var(--ssc-clay-bg); border: 1px solid var(--ssc-clay); opacity: 1; }
290 .ssc-tile-name { display: flex; align-items: center; gap: 6px; color: var(--ssc-faint); }
291 .ssc-tile.ssc-on .ssc-tile-name { color: var(--ssc-clay); }
292 .ssc-tile-name span { font-size: 12px; font-weight: 430; white-space: nowrap; color: var(--ssc-text); }
293 .ssc-tile.ssc-on .ssc-tile-name span { font-weight: 600; }
294 .ssc-tile-caption { font-size: 10.5px; color: var(--ssc-sub); margin-top: 5px; line-height: 1.35; }
295 .ssc-filemark {
296 position: absolute; left: 5px; right: 5px; bottom: 8px; display: inline-flex; align-items: center; justify-content: center; gap: 2px;
297 font-size: 8.5px; color: var(--ssc-label); background: var(--ssc-bg); border: 1px solid var(--ssc-clay);
298 border-radius: 6px; padding: 2px 3px; white-space: nowrap; overflow: hidden;
299 }
300 .ssc-filemark svg { flex-shrink: 0; }
301 .ssc-machine-filemark { display: inline-flex; align-items: center; gap: 4px; margin-left: 10px; font-size: 10.5px; font-weight: 500; color: var(--ssc-label); }
302 .ssc-ring {
303 position: absolute; border: 2px solid var(--ssc-clay); border-radius: 18px; pointer-events: none;
304 transition: left 0.35s ease, top 0.35s ease, width 0.35s ease, height 0.35s ease;
305 }
306 .ssc-ring-label {
307 position: absolute; font-size: 12px; font-weight: 600; color: var(--ssc-label); white-space: nowrap; pointer-events: none;
308 transition: left 0.35s ease, top 0.35s ease;
309 }
310 `}</style>
311
312 <div className="ssc-head">
313 <div className="ssc-files" role="group" aria-label="Settings file">
314 {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>)}
315 </div>
316 <button type="button" className="ssc-fsbtn" onClick={toggleFullscreen} aria-label={isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}>{isFullscreen ? '⤡' : '⛶'}</button>
317 </div>
318
319 <div ref={frameRef} className="ssc-frame" style={{
320 height: CANVAS_H * scale + 'px'
321 }}>
322 <div className="ssc-canvas" style={{
323 transform: 'scale(' + scale + ')'
324 }}>
325 <div className="ssc-machine" style={{
326 left: '10px',
327 width: '430px'
328 }} />
329 <span className="ssc-machine-label" style={{
330 left: '30px'
331 }}><LaptopIcon />Your machine{fileAt.machine === 'you' && <span className="ssc-machine-filemark ssc-mono"><FileIcon />{selFile.path}</span>}</span>
332 <div className="ssc-machine" style={{
333 left: '460px',
334 width: '200px'
335 }} />
336 <span className="ssc-machine-label" style={{
337 left: '470px'
338 }}><LaptopIcon />A teammate’s machine</span>
339 <div className="ssc-machine" style={{
340 left: '682px',
341 width: '170px'
342 }} />
343 <span className="ssc-machine-label" style={{
344 left: '692px'
345 }}><CloudIcon />A cloud session</span>
346
347 {TILES.map(t => {
348 const on = coverage.includes(t.id);
349 return <div key={t.id} className={'ssc-tile' + (on ? ' ssc-on' : '')} style={{
350 left: t.left + 'px'
351 }}>
352 <div className="ssc-tile-name"><FolderIcon open={on} /><span className="ssc-mono">{t.name}</span></div>
353 {t.caption && <div className="ssc-tile-caption">{t.caption}</div>}
354 {fileAt.tiles.includes(t.id) && <span className="ssc-filemark ssc-mono" title={SHORT[sel]}><FileIcon />{TILE_MARK[sel]}</span>}
355 </div>;
356 })}
357
358 <div className="ssc-ring" style={{
359 left: ring.l + 'px',
360 top: ring.t + 'px',
361 width: ring.w + 'px',
362 height: ring.h + 'px'
363 }} />
364 <span className="ssc-ring-label ssc-mono" style={{
365 left: ring.l + 14 + 'px',
366 top: ring.t - 26 + 'px'
367 }}>{selFile.ring || selFile.path}</span>
368 </div>
369 </div>
370 </div>;
371};
372
373設定是變更 Claude Code 行為方式的 JSON 金鑰:它啟動時使用的模型、它可以在不詢問的情況下執行的內容、它無法讀取的檔案、它在您的終端機中的外觀,以及您的組織強制執行的內容。9設定是變更 Claude Code 行為方式的 JSON 金鑰:它啟動時使用的模型、它可以在不詢問的情況下執行的內容、它無法讀取的檔案、它在您的終端機中的外觀,以及您的組織強制執行的內容。
374 10
375<Tip>11> [!TIP]
376 若要查詢特定金鑰,請前往[所有設定](/docs/zh-TW/settings-reference),其中列出每個金鑰及其設定位置、預設值和範例。12>
377</Tip>13> 若要查詢特定金鑰,請前往[所有設定](/docs/zh-TW/settings-reference),其中列出每個金鑰及其設定位置、預設值和範例。
378 14
379Claude Code 從 JSON 設定檔案(例如 `~/.claude/settings.json`)讀取設定。它在幾個位置尋找它們,而[它讀取設定的檔案決定了設定適用於誰](#settings-files-and-who-they-affect)。本頁涵蓋這些檔案:將設定放在哪個檔案中、如何變更設定並確認其已應用,以及當相同金鑰在多個檔案中設定時 Claude Code 使用哪個值。[設定權限](/docs/zh-TW/permissions)涵蓋 Claude Code 可以在不詢問的情況下執行的內容以及如何編寫 `allow`、`ask` 和 `deny` 規則。15Claude Code 從 JSON 設定檔案(例如 `~/.claude/settings.json`)讀取設定。它在幾個位置尋找它們,而[它讀取設定的檔案決定了設定適用於誰](#settings-files-and-who-they-affect)。本頁涵蓋這些檔案:將設定放在哪個檔案中、如何變更設定並確認其已應用,以及當相同金鑰在多個檔案中設定時 Claude Code 使用哪個值。[設定權限](/docs/zh-TW/permissions)涵蓋 Claude Code 可以在不詢問的情況下執行的內容以及如何編寫 `allow`、`ask` 和 `deny` 規則。
380 16
381<Note>17> [!NOTE]
382 本頁涵蓋在您的機器上執行的 Claude Code:終端機、[VS Code](/docs/zh-TW/vs-code) 和 [JetBrains](/docs/zh-TW/jetbrains) 擴充功能,以及[桌面應用程式](/docs/zh-TW/desktop),它們都讀取相同的設定檔案。[Claude Code on the web](/docs/zh-TW/claude-code-on-the-web) 上的雲端工作階段在不同的機器上執行並僅讀取其中一些;請參閱[雲端工作階段中的設定](#settings-in-cloud-sessions)。18>
383</Note>19> 本頁涵蓋在您的機器上執行的 Claude Code:終端機、[VS Code](/docs/zh-TW/vs-code) 和 [JetBrains](/docs/zh-TW/jetbrains) 擴充功能,以及[桌面應用程式](/docs/zh-TW/desktop),它們都讀取相同的設定檔案。[Claude Code on the web](/docs/zh-TW/claude-code-on-the-web) 上的雲端工作階段在不同的機器上執行並僅讀取其中一些;請參閱[雲端工作階段中的設定](#settings-in-cloud-sessions)。
384
385<span id="settings-files" />
386 20
387<span id="configuration-scopes" />21## 設定檔案及其影響範圍
388
389<span id="available-scopes" />
390
391<span id="when-to-use-each-scope" />
392
393<span id="what-uses-scopes" />
394
395<span id="subagent-configuration" />
396
397<span id="where-settings-live" />
398
399<h2 id="settings-files-and-who-they-affect">
400 設定檔案及其影響範圍
401</h2>
402 22
403Claude Code 從四個檔案讀取設定,組織也可以從 claude.ai 主控台傳遞受管設定。每個來源都有一個範圍:設定儲存在其中的人員和專案集合,無論是只有您、專案中的每個人,還是組織中的每個人。23Claude Code 從四個檔案讀取設定,組織也可以從 claude.ai 主控台傳遞受管設定。每個來源都有一個範圍:設定儲存在其中的人員和專案集合,無論是只有您、專案中的每個人,還是組織中的每個人。
404 24
411 31
412在「檔案」欄中,`~/.claude` 是您家目錄中的 `.claude` 資料夾,而單獨的 `.claude` 是您專案內的 `.claude` 資料夾。32在「檔案」欄中,`~/.claude` 是您家目錄中的 `.claude` 資料夾,而單獨的 `.claude` 是您專案內的 `.claude` 資料夾。
413 33
414<span id="where-each-file-applies" />34### 比較每個設定檔案的範圍
415
416<span id="compare-what-each-file-reaches" />
417
418<h3 id="compare-the-scope-of-each-settings-file">
419 比較每個設定檔案的範圍
420</h3>
421 35
422假設您在機器上有三個專案 `website/`、`api/` 和 `acme-app/`,隊友有自己的 `acme-app/` 複製,而您在 `acme-app/` 上啟動[雲端工作階段](#settings-in-cloud-sessions)。36假設您在機器上有三個專案 `website/`、`api/` 和 `acme-app/`,隊友有自己的 `acme-app/` 複製,而您在 `acme-app/` 上啟動[雲端工作階段](#settings-in-cloud-sessions)。
423 37
424下圖顯示當您從這些資料夾啟動 Claude Code 時,設定適用於哪些資料夾。按一下設定檔案以查看它到達的資料夾。38下圖顯示當您從這些資料夾啟動 Claude Code 時,設定適用於哪些資料夾。按一下設定檔案以查看它到達的資料夾。
425 39
426<SettingsScope />40Settings file
41
42Your machine
43
44A teammate’s machine
45
46A cloud session
427 47
428* **`~/.claude/settings.json`**:您機器上的每個專案,而不會到達隊友的機器或雲端工作階段48* **`~/.claude/settings.json`**:您機器上的每個專案,而不會到達隊友的機器或雲端工作階段
429* **`acme-app/.claude/settings.json`**:您的 `acme-app/`。只有在您將檔案提交到版本控制時,它才會到達隊友的複製和雲端工作階段;在您這樣做之前,它就像任何其他檔案一樣在您的磁碟上,沒有人有它49* **`acme-app/.claude/settings.json`**:您的 `acme-app/`。只有在您將檔案提交到版本控制時,它才會到達隊友的複製和雲端工作階段;在您這樣做之前,它就像任何其他檔案一樣在您的磁碟上,沒有人有它
430* **`acme-app/.claude/settings.local.json`**:僅您的 `acme-app/`。Claude Code 在第一次寫入檔案時將其新增至您的全域 git 排除項目,因此它保留在您的提交之外;如果您手動建立檔案,[自行將其新增至 `.gitignore`](#keep-personal-settings-out-of-a-repository)50* **`acme-app/.claude/settings.local.json`**:僅您的 `acme-app/`。Claude Code 在第一次寫入檔案時將其新增至您的全域 git 排除項目,因此它保留在您的提交之外;如果您手動建立檔案,[自行將其新增至 `.gitignore`](#keep-personal-settings-out-of-a-repository)
431* **受管設定**,無論是 `managed-settings.json` 檔案、MDM 政策,還是來自 claude.ai 主控台的[伺服器受管設定](/docs/zh-TW/server-managed-settings):您的組織部署到的每台機器上的每個專案,或您使用組織帳戶登入的地方。只有伺服器受管設定才能到達雲端工作階段51* **受管設定**,無論是 `managed-settings.json` 檔案、MDM 政策,還是來自 claude.ai 主控台的[伺服器受管設定](/docs/zh-TW/server-managed-settings):您的組織部署到的每台機器上的每個專案,或您使用組織帳戶登入的地方。只有伺服器受管設定才能到達雲端工作階段
432 52
433<span id="which-files-you-have" />53### 尋找或建立您的設定檔案
434
435<h3 id="find-or-create-your-settings-files">
436 尋找或建立您的設定檔案
437</h3>
438 54
439安裝 Claude Code 不會建立任何設定檔案。如果您的機器或專案已經有一個,它來自以下來源之一:55安裝 Claude Code 不會建立任何設定檔案。如果您的機器或專案已經有一個,它來自以下來源之一:
440 56
442* **共享專案**:已經使用 Claude Code 的專案可能已提交一個。如果沒有,請在專案資料夾中的 `.claude/settings.json` 建立一個。58* **共享專案**:已經使用 Claude Code 的專案可能已提交一個。如果沒有,請在專案資料夾中的 `.claude/settings.json` 建立一個。
443* **使用者**和**專案本機**:自行建立它們,或讓 Claude Code 建立它們。它在您第一次在 `/config` 選單中變更儲存在使用者設定中的選項時寫入 `~/.claude/settings.json`,例如佈景主題,以及在您第一次在權限提示上給予常設核准時寫入 `.claude/settings.local.json`,例如針對 Bash 命令選擇「是的,不要再問」。少數 `/config` 選項,包括**顯示提示**,改為儲存至 `.claude/settings.local.json` 而不是使用者檔案。59* **使用者**和**專案本機**:自行建立它們,或讓 Claude Code 建立它們。它在您第一次在 `/config` 選單中變更儲存在使用者設定中的選項時寫入 `~/.claude/settings.json`,例如佈景主題,以及在您第一次在權限提示上給予常設核准時寫入 `.claude/settings.local.json`,例如針對 Bash 命令選擇「是的,不要再問」。少數 `/config` 選項,包括**顯示提示**,改為儲存至 `.claude/settings.local.json` 而不是使用者檔案。
444 60
445<Info>61> [!NOTE]
446 在 Windows 上,`~/.claude` 表示 `%USERPROFILE%\.claude`。若要將家目錄檔案保留在其他地方,請設定 [`CLAUDE_CONFIG_DIR`](/docs/zh-TW/env-vars);Claude Code 會改為在那裡儲存您的設定、工作階段歷史記錄和外掛。62>
447</Info>63> 在 Windows 上,`~/.claude` 表示 `%USERPROFILE%\.claude`。若要將家目錄檔案保留在其他地方,請設定 [`CLAUDE_CONFIG_DIR`](/docs/zh-TW/env-vars);Claude Code 會改為在那裡儲存您的設定、工作階段歷史記錄和外掛。
448 64
449Claude Code 也保留第五個檔案 [`~/.claude.json`](/docs/zh-TW/claude-directory#ce-claude-json),它為自己寫入;您不需要編輯它。它保留您的登入工作階段、[MCP 伺服器](/docs/zh-TW/mcp)設定、每個專案的狀態(例如信任決定),以及 `/config` 為您寫入的[全域設定鍵](/docs/zh-TW/settings-reference#global-config-settings)。65Claude Code 也保留第五個檔案 [`~/.claude.json`](/docs/zh-TW/claude-directory#ce-claude-json),它為自己寫入;您不需要編輯它。它保留您的登入工作階段、[MCP 伺服器](/docs/zh-TW/mcp)設定、每個專案的狀態(例如信任決定),以及 `/config` 為您寫入的[全域設定鍵](/docs/zh-TW/settings-reference#global-config-settings)。
450 66
451<h3 id="share-settings-with-your-team">67### 與您的團隊共享設定
452 與您的團隊共享設定
453</h3>
454 68
455提交 `.claude/settings.json` 以便複製儲存庫的每個人都取得相同的權限、hook 和外掛。每個隊友仍然可以在自己的 `.claude/settings.local.json` 中為自己覆寫它,因此個人例外不需要提交。如需完整的團隊檔案,請參閱[團隊的共享設定](/docs/zh-TW/settings-example#a-teams-shared-settings)。69提交 `.claude/settings.json` 以便複製儲存庫的每個人都取得相同的權限、hook 和外掛。每個隊友仍然可以在自己的 `.claude/settings.local.json` 中為自己覆寫它,因此個人例外不需要提交。如需完整的團隊檔案,請參閱[團隊的共享設定](/docs/zh-TW/settings-example#a-teams-shared-settings)。
456 70
457您提交的某些內容會等到每個隊友[信任資料夾](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust),而少數設定鍵永遠不會從儲存庫檔案生效;[對不適用的設定進行疑難排解](#common-cases)涵蓋兩者。71您提交的某些內容會等到每個隊友[信任資料夾](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust),而少數設定鍵永遠不會從儲存庫檔案生效;[對不適用的設定進行疑難排解](#common-cases)涵蓋兩者。
458 72
459<span id="local-settings-file" />73### 將個人設定保留在儲存庫之外
460
461<span id="where-claude-code-saves-the-project-local-file" />
462
463<span id="the-project-local-file" />
464
465<span id="keep-personal-settings-out-of-the-repository" />
466
467<h3 id="keep-personal-settings-out-of-a-repository">
468 將個人設定保留在儲存庫之外
469</h3>
470 74
471若要在一個專案中為自己變更設定而不為隊友變更,請將其儲存在專案內的 `.claude/settings.local.json` 中。Claude Code 在提交的 `.claude/settings.json` 上套用該檔案,因此如果您的團隊檔案設定 `"model": "claude-sonnet-5"` 而您想要 Opus,請在本機檔案中放入 `"model": "claude-opus-5-5"`,只有您的工作階段會變更。75若要在一個專案中為自己變更設定而不為隊友變更,請將其儲存在專案內的 `.claude/settings.local.json` 中。Claude Code 在提交的 `.claude/settings.json` 上套用該檔案,因此如果您的團隊檔案設定 `"model": "claude-sonnet-5"` 而您想要 Opus,請在本機檔案中放入 `"model": "claude-opus-5-5"`,只有您的工作階段會變更。
472 76
476* **您不需要自行 gitignore 它,除非您手動建立它。** Claude Code 在尚未忽略它的 git 儲存庫中第一次寫入檔案時,它會將 `**/.claude/settings.local.json` 新增至您的全域 git 排除項目檔案,因此檔案在每個儲存庫中保留在您的提交之外。當您的全域 git 設定將 `core.excludesFile` 設為絕對路徑或 `~` 前綴路徑時,該檔案就是 `core.excludesFile`;否則它是 `$XDG_CONFIG_HOME/git/ignore`,或當 `XDG_CONFIG_HOME` 未設定時為 `~/.config/git/ignore`。如果您手動建立檔案,而 Claude Code 尚未寫入它,請自行將其新增至 `.gitignore`。80* **您不需要自行 gitignore 它,除非您手動建立它。** Claude Code 在尚未忽略它的 git 儲存庫中第一次寫入檔案時,它會將 `**/.claude/settings.local.json` 新增至您的全域 git 排除項目檔案,因此檔案在每個儲存庫中保留在您的提交之外。當您的全域 git 設定將 `core.excludesFile` 設為絕對路徑或 `~` 前綴路徑時,該檔案就是 `core.excludesFile`;否則它是 `$XDG_CONFIG_HOME/git/ignore`,或當 `XDG_CONFIG_HOME` 未設定時為 `~/.config/git/ignore`。如果您手動建立檔案,而 Claude Code 尚未寫入它,請自行將其新增至 `.gitignore`。
477* **其 allow 規則在檔案保持未追蹤時不等待信任。** 因為檔案是您的而不是儲存庫的,Claude Code 套用其 `allow` 規則而不需要它對提交檔案要求的[工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)步驟。如果檔案由 git 追蹤,信任步驟也適用於它;請參閱[當您的本機設定檔案需要信任時](/docs/zh-TW/permissions#when-your-local-settings-file-needs-trust)。81* **其 allow 規則在檔案保持未追蹤時不等待信任。** 因為檔案是您的而不是儲存庫的,Claude Code 套用其 `allow` 規則而不需要它對提交檔案要求的[工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)步驟。如果檔案由 git 追蹤,信任步驟也適用於它;請參閱[當您的本機設定檔案需要信任時](/docs/zh-TW/permissions#when-your-local-settings-file-needs-trust)。
478 82
479<span id="where-claude-code-looks-for-each-file" />83#### Claude Code 在 git 儲存庫中保留本機檔案的位置
480
481<span id="how-claude-code-keeps-the-local-file-out-of-git" />
482
483<span id="local-allow-rules-dont-wait-for-workspace-trust" />
484
485<h4 id="where-claude-code-keeps-the-local-file-in-a-git-repository">
486 Claude Code 在 git 儲存庫中保留本機檔案的位置
487</h4>
488 84
489當 Claude 要求執行 Bash 命令的權限,而您選擇「是的,不要再問」時,Claude Code 會將該核准儲存為 `.claude/settings.local.json` 中的 `allow` 規則。如果您在 git 儲存庫的子目錄中啟動 Claude Code,它會在儲存庫根目錄讀取和寫入該檔案,並在整個儲存庫中套用核准。在 [worktree](/docs/zh-TW/worktrees) 中,它使用主簽出根目錄的檔案。85當 Claude 要求執行 Bash 命令的權限,而您選擇「是的,不要再問」時,Claude Code 會將該核准儲存為 `.claude/settings.local.json` 中的 `allow` 規則。如果您在 git 儲存庫的子目錄中啟動 Claude Code,它會在儲存庫根目錄讀取和寫入該檔案,並在整個儲存庫中套用核准。在 [worktree](/docs/zh-TW/worktrees) 中,它使用主簽出根目錄的檔案。
490 86
497 93
498Claude Code 從工作階段的[主要工作目錄](/docs/zh-TW/permissions#working-directories)讀取共享 `.claude/settings.json`,因此若要使用在儲存庫根目錄提交的檔案,請從那裡啟動 Claude Code。在您[使用 `/cd` 移動工作階段](/docs/zh-TW/permissions#move-the-session-to-another-directory)後,Claude Code 改為從新目錄讀取兩個專案檔案,按相同規則放置本機檔案。從您移動到的目錄讀取它們需要 Claude Code v2.1.246 或更新版本。若是從桌面應用程式啟動的 worktree 工作階段,請參閱[worktree 與主簽出共享的內容](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout)。94Claude Code 從工作階段的[主要工作目錄](/docs/zh-TW/permissions#working-directories)讀取共享 `.claude/settings.json`,因此若要使用在儲存庫根目錄提交的檔案,請從那裡啟動 Claude Code。在您[使用 `/cd` 移動工作階段](/docs/zh-TW/permissions#move-the-session-to-another-directory)後,Claude Code 改為從新目錄讀取兩個專案檔案,按相同規則放置本機檔案。從您移動到的目錄讀取它們需要 Claude Code v2.1.246 或更新版本。若是從桌面應用程式啟動的 worktree 工作階段,請參閱[worktree 與主簽出共享的內容](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout)。
499 95
500<span id="managed-settings-delivery" />96### 檢查您的組織強制執行的內容
501
502<span id="precedence-within-the-managed-tier" />
503
504<span id="parent-settings-from-embedding-hosts" />
505
506<span id="enforce-settings-for-an-organization" />
507
508<span id="settings-your-organization-manages" />
509
510<h3 id="check-what-your-organization-enforces">
511 檢查您的組織強制執行的內容
512</h3>
513 97
514如果您的組織管理 Claude Code,某些設定是為您決定的,您在自己的檔案中放入的任何內容都不會變更它們。若要查看哪些,請執行 `/status`:`Setting sources` 行會列出適用於您的受管來源。受管設定在此機器上 Claude Code 執行的任何地方適用;[開發人員可以變更的內容](/docs/zh-TW/managed-settings#what-a-developer-can-change)涵蓋本機管理員權限和 Claude Code 以外的工具。98如果您的組織管理 Claude Code,某些設定是為您決定的,您在自己的檔案中放入的任何內容都不會變更它們。若要查看哪些,請執行 `/status`:`Setting sources` 行會列出適用於您的受管來源。受管設定在此機器上 Claude Code 執行的任何地方適用;[開發人員可以變更的內容](/docs/zh-TW/managed-settings#what-a-developer-can-change)涵蓋本機管理員權限和 Claude Code 以外的工具。
515 99
523 107
524如果您是管理員,[為您的組織設定 Claude Code](/docs/zh-TW/admin-setup) 會逐步說明選擇要強制執行的內容,而[部署受管設定](/docs/zh-TW/managed-settings)涵蓋傳遞以及如何確認政策生效。關於 claude.ai 管理主控台中受管設定編輯器可能顯示的警告,請參閱[設定伺服器受管設定](/docs/zh-TW/server-managed-settings#configure-server-managed-settings)。108如果您是管理員,[為您的組織設定 Claude Code](/docs/zh-TW/admin-setup) 會逐步說明選擇要強制執行的內容,而[部署受管設定](/docs/zh-TW/managed-settings)涵蓋傳遞以及如何確認政策生效。關於 claude.ai 管理主控台中受管設定編輯器可能顯示的警告,請參閱[設定伺服器受管設定](/docs/zh-TW/server-managed-settings#configure-server-managed-settings)。
525 109
526<h2 id="change-a-setting">110## 變更設定
527 變更設定
528</h2>
529 111
530您可以從 `/config` 功能表、編輯設定檔案或一個工作階段的命令列變更設定。112您可以從 `/config` 功能表、編輯設定檔案或一個工作階段的命令列變更設定。
531 113
532<span id="system-prompt" />
533
534Claude Code 的系統提示未發佈。若要給 Claude 常設指示,請使用 [`CLAUDE.md` 檔案](/docs/zh-TW/memory)或 `--append-system-prompt` 旗標。114Claude Code 的系統提示未發佈。若要給 Claude 常設指示,請使用 [`CLAUDE.md` 檔案](/docs/zh-TW/memory)或 `--append-system-prompt` 旗標。
535 115
536<h3 id="use-the-/config-menu">116### 使用 /config 功能表
537 使用 /config 功能表
538</h3>
539 117
540在 Claude Code 內執行 `/config` 並開啟 **Config** 標籤。它列出一小組個人選項,例如主題、編輯器模式和詳細輸出,而不是每個設定金鑰。選擇一個選項來變更它;Claude Code 為您儲存它:118在 Claude Code 內執行 `/config` 並開啟 **Config** 標籤。它列出一小組個人選項,例如主題、編輯器模式和詳細輸出,而不是每個設定金鑰。選擇一個選項來變更它;Claude Code 為您儲存它:
541 119
545 123
546若要設定一個選項而不使用功能表,請傳遞 `key=value`,例如 `/config verbose=true`。124若要設定一個選項而不使用功能表,請傳遞 `key=value`,例如 `/config verbose=true`。
547 125
548<Note>126> [!NOTE]
549 `/config` 是終端機介面的一部分。[VS Code](/docs/zh-TW/vs-code) 聊天面板和[桌面應用程式](/docs/zh-TW/desktop)不開啟它;通過編輯設定檔案或通過這些應用程式自己的設定在那裡變更設定。127>
550</Note>128> `/config` 是終端機介面的一部分。[VS Code](/docs/zh-TW/vs-code) 聊天面板和[桌面應用程式](/docs/zh-TW/desktop)不開啟它;通過編輯設定檔案或通過這些應用程式自己的設定在那裡變更設定。
551 129
552<h3 id="edit-a-settings-file">130### 編輯設定檔案
553 編輯設定檔案
554</h3>
555 131
556在您的編輯器中開啟您想要的範圍的設定檔案,並新增或變更金鑰。設定檔案是嚴格的 JSON:`//` 註解或尾部逗號是語法錯誤,Claude Code 在下次啟動時將檔案報告為[設定錯誤](#fix-a-broken-settings-file)。例如,若要讓 Claude Code 執行您的 lint 和測試命令而不詢問並停止讀取 `.env` 檔案,請將此新增到 `~/.claude/settings.json`:132在您的編輯器中開啟您想要的範圍的設定檔案,並新增或變更金鑰。設定檔案是嚴格的 JSON:`//` 註解或尾部逗號是語法錯誤,Claude Code 在下次啟動時將檔案報告為[設定錯誤](#fix-a-broken-settings-file)。例如,若要讓 Claude Code 執行您的 lint 和測試命令而不詢問並停止讀取 `.env` 檔案,請將此新增到 `~/.claude/settings.json`:
557 133
577 153
578如需完整的個人檔案、團隊檔案和組織檔案,每個都帶有每個金鑰的註解,請參閱[範例設定檔案](/docs/zh-TW/settings-example)。154如需完整的個人檔案、團隊檔案和組織檔案,每個都帶有每個金鑰的註解,請參閱[範例設定檔案](/docs/zh-TW/settings-example)。
579 155
580<span id="pass-settings-for-one-session" />156### 為一個工作階段變更設定
581
582<h3 id="change-a-setting-for-one-session">
583 為一個工作階段變更設定
584</h3>
585 157
586若要嘗試值而不儲存它,請在啟動 Claude Code 時設定它。該值適用於該工作階段,您的設定檔案保持原樣。您有三種方式執行此操作:158若要嘗試值而不儲存它,請在啟動 Claude Code 時設定它。該值適用於該工作階段,您的設定檔案保持原樣。您有三種方式執行此操作:
587 159
601claude --settings '{"model": "claude-opus-5-5"}'173claude --settings '{"model": "claude-opus-5-5"}'
602```174```
603 175
604<h3 id="when-edits-take-effect">176### 編輯何時生效
605 編輯何時生效
606</h3>
607 177
608Claude Code 監視您的設定檔案並在它們變更時重新載入它們,因此它應用大多數編輯到執行中的工作階段而不需要重新啟動,包括對 `permissions`、`hooks` 和認證協助程式(例如 `apiKeyHelper`)的編輯。Claude Code 也在其資料夾在工作階段啟動時存在時載入您在中途建立的設定檔案。對於專案的 `.claude/` 資料夾,即使您在同一工作階段中建立資料夾,它也會載入檔案。178Claude Code 監視您的設定檔案並在它們變更時重新載入它們,因此它應用大多數編輯到執行中的工作階段而不需要重新啟動,包括對 `permissions`、`hooks` 和認證協助程式(例如 `apiKeyHelper`)的編輯。Claude Code 也在其資料夾在工作階段啟動時存在時載入您在中途建立的設定檔案。對於專案的 `.claude/` 資料夾,即使您在同一工作階段中建立資料夾,它也會載入檔案。
609 179
614* [`model`](/docs/zh-TW/settings-reference#model):使用 [`/model`](/docs/zh-TW/model-config#setting-your-model) 在中途切換。每個模型都有自己的提示快取,因此切換後的第一個請求會重新讀取整個對話未快取;請參閱[切換模型](/docs/zh-TW/prompt-caching#switching-models)184* [`model`](/docs/zh-TW/settings-reference#model):使用 [`/model`](/docs/zh-TW/model-config#setting-your-model) 在中途切換。每個模型都有自己的提示快取,因此切換後的第一個請求會重新讀取整個對話未快取;請參閱[切換模型](/docs/zh-TW/prompt-caching#switching-models)
615* [`effortLevel`](/docs/zh-TW/settings-reference#effortlevel) 和 [`modelSettings`](/docs/zh-TW/settings-reference#modelsettings):使用 [`/effort`](/docs/zh-TW/model-config#adjust-effort-level) 在中途變更努力185* [`effortLevel`](/docs/zh-TW/settings-reference#effortlevel) 和 [`modelSettings`](/docs/zh-TW/settings-reference#modelsettings):使用 [`/effort`](/docs/zh-TW/model-config#adjust-effort-level) 在中途變更努力
616 186
617<span id="verify-active-settings" />187### 確認已載入的內容
618
619<span id="check-what-loaded" />
620
621<h3 id="confirm-what-loaded">
622 確認已載入的內容
623</h3>
624 188
625在 Claude Code 內執行 `/status` 以查看哪些設定來源是使用中的。**Status** 標籤包含 `Setting sources` 行,列出 Claude Code 為目前工作階段載入的每個設定檔案,例如 `User settings` 或 `Project local settings`。當[受管設定](/docs/zh-TW/admin-setup#decide-how-settings-reach-devices)生效時,受管設定項目在括號中顯示它們如何到達您的機器。189在 Claude Code 內執行 `/status` 以查看哪些設定來源是使用中的。**Status** 標籤包含 `Setting sources` 行,列出 Claude Code 為目前工作階段載入的每個設定檔案,例如 `User settings` 或 `Project local settings`。當[受管設定](/docs/zh-TW/admin-setup#decide-how-settings-reach-devices)生效時,受管設定項目在括號中顯示它們如何到達您的機器。
626 190
627該行確認 Claude Code 讀取了哪些檔案;它不顯示哪個檔案提供了每個金鑰。若要列出 Claude Code 拒絕的項目,請執行 [`claude doctor`](/docs/zh-TW/debug-your-config);對於專案或受管設定設定的模型,啟動標頭命名設定它的檔案。`/status` 和 `/config` 在不同標籤上開啟相同的對話框,**Config** 標籤不是您 `settings.json` 內容的檢視。191該行確認 Claude Code 讀取了哪些檔案;它不顯示哪個檔案提供了每個金鑰。若要列出 Claude Code 拒絕的項目,請執行 [`claude doctor`](/docs/zh-TW/debug-your-config);對於專案或受管設定設定的模型,啟動標頭命名設定它的檔案。`/status` 和 `/config` 在不同標籤上開啟相同的對話框,**Config** 標籤不是您 `settings.json` 內容的檢視。
628 192
629<h3 id="fix-a-broken-settings-file">193### 修復損壞的設定檔案
630 修復損壞的設定檔案
631</h3>
632 194
633如果您輸入錯誤的 JSON 或將金鑰設定為 Claude Code 不接受的值,Claude Code 在互動式工作階段啟動時會告訴您。它顯示的內容取決於檔案受影響的程度:195如果您輸入錯誤的 JSON 或將金鑰設定為 Claude Code 不接受的值,Claude Code 在互動式工作階段啟動時會告訴您。它顯示的內容取決於檔案受影響的程度:
634 196
641 203
642`-p` 執行不顯示對話框。除非[受管設定文件無法解析](/docs/zh-TW/errors#managed-settings-document-could-not-be-parsed),Claude Code 跳過損壞的檔案或值並繼續其餘部分,因此在忽略設定的 `-p` 執行後,執行 `claude doctor` 以查看它丟棄的內容。204`-p` 執行不顯示對話框。除非[受管設定文件無法解析](/docs/zh-TW/errors#managed-settings-document-could-not-be-parsed),Claude Code 跳過損壞的檔案或值並繼續其餘部分,因此在忽略設定的 `-p` 執行後,執行 `claude doctor` 以查看它丟棄的內容。
643 205
644<span id="how-scopes-interact" />206## 設定優先順序
645
646<span id="key-points-about-the-configuration-system" />
647
648<span id="which-value-claude-code-uses" />
649
650<span id="which-value-wins" />
651
652<h2 id="settings-precedence">
653 設定優先順序
654</h2>
655 207
656當相同的鍵出現在多個位置時,Claude Code 會使用最高層級設定的值。下面的堆疊顯示各個層級,最高的在頂部;較高層級的鍵會覆寫下面任何地方的相同鍵。208當相同的鍵出現在多個位置時,Claude Code 會使用最高層級設定的值。下面的堆疊顯示各個層級,最高的在頂部;較高層級的鍵會覆寫下面任何地方的相同鍵。
657 209
658<SettingsPrecedence />210Settings precedence, highest first: managed settings, command line, project local, shared project, user. A key set at a higher level overrides the same key set lower down.
659 211
660按順序,優先順序最高的優先:212按順序,優先順序最高的優先:
661 213
669 221
670對於少數安全敏感的鍵,Claude Code 會尊重來自較低層級的更嚴格值而不是受管值;[受管設定優先順序的例外](#exceptions-to-managed-settings-precedence)列出了它們。222對於少數安全敏感的鍵,Claude Code 會尊重來自較低層級的更嚴格值而不是受管值;[受管設定優先順序的例外](#exceptions-to-managed-settings-precedence)列出了它們。
671 223
672<h3 id="lists-merge-instead-of-overriding">224### 列表合併而不是覆寫
673 列表合併而不是覆寫
674</h3>
675 225
676當您在多個檔案中設定相同的列表鍵(例如 `permissions.allow`)時,Claude Code 會合併列表而不是選擇一個,因此每個檔案都可以新增項目而不移除另一個檔案的項目。四個保存模型列表或每個模型項目的鍵遵循自己的規則:226當您在多個檔案中設定相同的列表鍵(例如 `permissions.allow`)時,Claude Code 會合併列表而不是選擇一個,因此每個檔案都可以新增項目而不移除另一個檔案的項目。四個保存模型列表或每個模型項目的鍵遵循自己的規則:
677 227
680* [`availableModels`](/docs/zh-TW/settings-reference#availablemodels):當 Claude Code 應用的受管設定定義它時,Claude Code 按原樣應用該列表,並忽略您在使用者、專案或本機設定中新增的項目,除非嵌入 Claude Code 的應用程式提供自己的模型列表;請參閱[受管設定優先順序的例外](#exceptions-to-managed-settings-precedence)。在受管來源之間,列表也永遠不會合併;[Claude Code 如何合併受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)說明哪個來源的列表適用。在非受管範圍內,Claude Code 照常合併陣列。230* [`availableModels`](/docs/zh-TW/settings-reference#availablemodels):當 Claude Code 應用的受管設定定義它時,Claude Code 按原樣應用該列表,並忽略您在使用者、專案或本機設定中新增的項目,除非嵌入 Claude Code 的應用程式提供自己的模型列表;請參閱[受管設定優先順序的例外](#exceptions-to-managed-settings-precedence)。在受管來源之間,列表也永遠不會合併;[Claude Code 如何合併受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)說明哪個來源的列表適用。在非受管範圍內,Claude Code 照常合併陣列。
681* [`modelSettings`](/docs/zh-TW/settings-reference#modelsettings):Claude Code 一次解析一個模型,連同 [`effortLevel`](/docs/zh-TW/settings-reference#effortlevel)。`modelSettings` 項目說明哪個檔案的值適用於模型。231* [`modelSettings`](/docs/zh-TW/settings-reference#modelsettings):Claude Code 一次解析一個模型,連同 [`effortLevel`](/docs/zh-TW/settings-reference#effortlevel)。`modelSettings` 項目說明哪個檔案的值適用於模型。
682 232
683<span id="examples" />233### 優先順序範例
684
685<h3 id="precedence-examples">
686 優先順序範例
687</h3>
688 234
689當 Claude 工作時,Claude Code 在微調器下方顯示一行提示,例如「使用 /config 變更您的預設權限模式(包括 Plan Mode)」。假設您想關閉這些提示,因此您在 `~/.claude/settings.json` 中將 [`spinnerTipsEnabled`](/docs/zh-TW/settings-reference#spinnertipsenabled) 設定為 `false`。下面的每個情景都是可能將它們重新開啟的事情,以及您可以做什麼。235當 Claude 工作時,Claude Code 在微調器下方顯示一行提示,例如「使用 /config 變更您的預設權限模式(包括 Plan Mode)」。假設您想關閉這些提示,因此您在 `~/.claude/settings.json` 中將 [`spinnerTipsEnabled`](/docs/zh-TW/settings-reference#spinnertipsenabled) 設定為 `false`。下面的每個情景都是可能將它們重新開啟的事情,以及您可以做什麼。
690 236
691<h4 id="team-settings-override-personal-settings">237#### 團隊設定覆寫個人設定
692 團隊設定覆寫個人設定
693</h4>
694 238
695您的團隊的 `.claude/settings.json` 將其設定為 `true`。Claude Code 使用專案值,因為共用專案位於使用者之上,因此您在該專案中看到提示,在其他地方看不到。239您的團隊的 `.claude/settings.json` 將其設定為 `true`。Claude Code 使用專案值,因為共用專案位於使用者之上,因此您在該專案中看到提示,在其他地方看不到。
696 240
697您可以取回您的值:在該專案的 `.claude/settings.local.json` 中新增 `"spinnerTipsEnabled": false`。專案本機位於共用專案之上,因此您在那裡的工作階段停止顯示提示,您的隊友的工作階段不會改變。241您可以取回您的值:在該專案的 `.claude/settings.local.json` 中新增 `"spinnerTipsEnabled": false`。專案本機位於共用專案之上,因此您在那裡的工作階段停止顯示提示,您的隊友的工作階段不會改變。
698 242
699<h4 id="organization-settings-override-everything">243#### 組織設定覆寫一切
700 組織設定覆寫一切
701</h4>
702 244
703您的組織的受管設定將其設定為 `true`。您在使用者、專案或本機設定中放置的任何內容都不會關閉提示,`--settings` 也不會。受管是最高層級。245您的組織的受管設定將其設定為 `true`。您在使用者、專案或本機設定中放置的任何內容都不會關閉提示,`--settings` 也不會。受管是最高層級。
704 246
705您無法取回您的值。執行 `/status` 以查看哪個受管來源適用,並詢問您的管理員是否應該變更原則。247您無法取回您的值。執行 `/status` 以查看哪個受管來源適用,並詢問您的管理員是否應該變更原則。
706 248
707<h4 id="the-command-line-overrides-your-files-for-one-session">249#### 命令列覆寫您的檔案一個工作階段
708 命令列覆寫您的檔案一個工作階段
709</h4>
710 250
711您使用 `claude --settings '{"spinnerTipsEnabled": true}'` 啟動了工作階段。命令列位於除受管外的每個檔案之上,因此該工作階段顯示提示,即使您的檔案說 `false`。251您使用 `claude --settings '{"spinnerTipsEnabled": true}'` 啟動了工作階段。命令列位於除受管外的每個檔案之上,因此該工作階段顯示提示,即使您的檔案說 `false`。
712 252
713您在下一個工作階段取回您的值;`--settings` 持續一個工作階段,不會寫入任何檔案。253您在下一個工作階段取回您的值;`--settings` 持續一個工作階段,不會寫入任何檔案。
714 254
715<h4 id="a-flag-or-environment-variable-sets-the-same-thing">255#### 旗標或環境變數設定相同的內容
716 旗標或環境變數設定相同的內容
717</h4>
718 256
719某些鍵具有命令列旗標或環境變數,無論哪個檔案設定它,都會覆寫設定值:`ANTHROPIC_MODEL` 覆寫 [`model`](/docs/zh-TW/settings-reference#model) 設定,`--model` 在一個工作階段內覆寫兩者。257某些鍵具有命令列旗標或環境變數,無論哪個檔案設定它,都會覆寫設定值:`ANTHROPIC_MODEL` 覆寫 [`model`](/docs/zh-TW/settings-reference#model) 設定,`--model` 在一個工作階段內覆寫兩者。
720 258
721您是否可以取回您的值取決於鍵:取消設定變數或刪除旗標,並檢查[設定參考](/docs/zh-TW/settings-reference)上的鍵項目和[環境變數參考](/docs/zh-TW/env-vars)上的變數列,以了解 Claude Code 使用哪一個。259您是否可以取回您的值取決於鍵:取消設定變數或刪除旗標,並檢查[設定參考](/docs/zh-TW/settings-reference)上的鍵項目和[環境變數參考](/docs/zh-TW/env-vars)上的變數列,以了解 Claude Code 使用哪一個。
722 260
723<span id="keys-ignored-in-a-repository-file" />261### 疑難排解不適用的設定
724
725<span id="keys-only-you-or-your-organization-can-set" />
726
727<span id="common-cases" />
728
729<span id="which-value-applies-in-common-situations" />
730
731<h3 id="troubleshoot-a-setting-that-doesn’t-apply">
732 疑難排解不適用的設定
733</h3>
734 262
735當您設定鍵而 Claude Code 沒有表現得像您一樣時,從 `/status` 開始查看它載入了哪些檔案,然後在下面找到您的症狀。[偵錯您的設定](/docs/zh-TW/debug-your-config)涵蓋更廣泛的檢查,包括乾淨設定測試。263當您設定鍵而 Claude Code 沒有表現得像您一樣時,從 `/status` 開始查看它載入了哪些檔案,然後在下面找到您的症狀。[偵錯您的設定](/docs/zh-TW/debug-your-config)涵蓋更廣泛的檢查,包括乾淨設定測試。
736 264
737<h4 id="a-value-you-set-is-ignored">265#### 您設定的值被忽略
738 您設定的值被忽略
739</h4>
740 266
741其他東西設定了相同的鍵,檔案無法設定該值,或檔案未載入:267其他東西設定了相同的鍵,檔案無法設定該值,或檔案未載入:
742 268
747 [`env`](/docs/zh-TW/settings-reference#env) 區塊中的遙測匯出變數也不會從專案或本機設定生效,除了少數關閉值。[Claude Code 在 `env` 中忽略的變數](/docs/zh-TW/settings-reference#variables-claude-code-ignores-in-env)列出變數和這些值。273 [`env`](/docs/zh-TW/settings-reference#env) 區塊中的遙測匯出變數也不會從專案或本機設定生效,除了少數關閉值。[Claude Code 在 `env` 中忽略的變數](/docs/zh-TW/settings-reference#variables-claude-code-ignores-in-env)列出變數和這些值。
748* **檔案已損壞。** 無效的 JSON 或被拒絕的值會導致 Claude Code 跳過檔案或項目;請參閱[修復損壞的設定檔案](#fix-a-broken-settings-file)。274* **檔案已損壞。** 無效的 JSON 或被拒絕的值會導致 Claude Code 跳過檔案或項目;請參閱[修復損壞的設定檔案](#fix-a-broken-settings-file)。
749 275
750<h4 id="a-change-you-made-in-claude-code-is-lost-in-new-sessions">276#### 您在 Claude Code 中所做的變更在新工作階段中丟失
751 您在 Claude Code 中所做的變更在新工作階段中丟失
752</h4>
753 277
754當您從 Claude Code 內部為新工作階段儲存選擇時,例如使用 `/model` 的預設模型,Claude Code 會將其寫入您的使用者設定檔案 `~/.claude/settings.json`。如果您無法寫入該檔案,例如因為另一個工具生成它或將其連結到唯讀副本,變更適用於目前工作階段,在下一個工作階段中消失。在生成檔案的工具中設定鍵,或將檔案替換為您可以寫入的檔案。278當您從 Claude Code 內部為新工作階段儲存選擇時,例如使用 `/model` 的預設模型,Claude Code 會將其寫入您的使用者設定檔案 `~/.claude/settings.json`。如果您無法寫入該檔案,例如因為另一個工具生成它或將其連結到唯讀副本,變更適用於目前工作階段,在下一個工作階段中消失。在生成檔案的工具中設定鍵,或將檔案替換為您可以寫入的檔案。
755 279
756如果您可以寫入檔案,變更仍然不持續,請檢查變更是否[僅適用於一個工作階段](#change-a-setting-for-one-session)或[較高層級設定相同的鍵](#a-value-you-set-is-ignored)。對於 `model` 鍵,[新工作階段以不同的模型開始,而不是您選擇的](/docs/zh-TW/model-config#a-new-session-starts-on-a-different-model-than-you-picked)列出更多原因。280如果您可以寫入檔案,變更仍然不持續,請檢查變更是否[僅適用於一個工作階段](#change-a-setting-for-one-session)或[較高層級設定相同的鍵](#a-value-you-set-is-ignored)。對於 `model` 鍵,[新工作階段以不同的模型開始,而不是您選擇的](/docs/zh-TW/model-config#a-new-session-starts-on-a-different-model-than-you-picked)列出更多原因。
757 281
758<h4 id="a-managed-change-hasn’t-reached-you">282#### 受管變更尚未到達您
759 受管變更尚未到達您
760</h4>
761 283
762受管來源根據[傳遞表](/docs/zh-TW/managed-settings#choose-a-delivery-mechanism)中的排程到達執行中的工作階段,因此請先重新啟動工作階段。如果 `/status` 隨後命名與您的管理員變更的來源不同的來源,則較高優先順序的來源適用;[Claude Code 如何合併受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)給出順序。284受管來源根據[傳遞表](/docs/zh-TW/managed-settings#choose-a-delivery-mechanism)中的排程到達執行中的工作階段,因此請先重新啟動工作階段。如果 `/status` 隨後命名與您的管理員變更的來源不同的來源,則較高優先順序的來源適用;[Claude Code 如何合併受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)給出順序。
763 285
764<h4 id="a-committed-key-doesn’t-reach-teammates">286#### 已提交的鍵無法到達隊友
765 已提交的鍵無法到達隊友
766</h4>
767 287
768兩件事使 `.claude/settings.json` 中的鍵無法為克隆它的每個人應用:288兩件事使 `.claude/settings.json` 中的鍵無法為克隆它的每個人應用:
769 289
772 在 `env` 鍵內,遙測匯出變數也永遠不會從共用檔案應用,除了少數關閉值;請參閱[Claude Code 在 `env` 中忽略的變數](/docs/zh-TW/settings-reference#variables-claude-code-ignores-in-env)。292 在 `env` 鍵內,遙測匯出變數也永遠不會從共用檔案應用,除了少數關閉值;請參閱[Claude Code 在 `env` 中忽略的變數](/docs/zh-TW/settings-reference#variables-claude-code-ignores-in-env)。
773* **鍵等待信任。** `permissions.allow` 規則、`permissions.additionalDirectories`、`extraKnownMarketplaces` 和大多數 [`env`](/docs/zh-TW/settings-reference#env) 值僅在每個隊友[信任資料夾](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)後應用。在那之前,他們仍然看到提示,不會從檔案宣告的市集獲得外掛。`deny` 和 `ask` 規則立即應用。293* **鍵等待信任。** `permissions.allow` 規則、`permissions.additionalDirectories`、`extraKnownMarketplaces` 和大多數 [`env`](/docs/zh-TW/settings-reference#env) 值僅在每個隊友[信任資料夾](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)後應用。在那之前,他們仍然看到提示,不會從檔案宣告的市集獲得外掛。`deny` 和 `ask` 規則立即應用。
774 294
775<h4 id="permission-rules-combine-differently-than-you-expected">295#### 權限規則的合併方式與您預期的不同
776 權限規則的合併方式與您預期的不同
777</h4>
778 296
779* **您在權限提示上選擇了「是,不要再問」,但仍然收到相同工具的提示。** 該選擇將 `allow` 規則儲存到您的本機檔案,本機檔案中的 `allow` 規則不會超越專案或受管檔案中的 `ask` 規則;[權限規則如何合併](/docs/zh-TW/permissions#settings-precedence)解釋了順序。在 VS Code 擴充功能中,核准卡讓您選擇目標檔案,包括專案的共用檔案,這會為每個人變更規則;在 CLI 中,Claude Code 僅寫入您的本機檔案。297* **您在權限提示上選擇了「是,不要再問」,但仍然收到相同工具的提示。** 該選擇將 `allow` 規則儲存到您的本機檔案,本機檔案中的 `allow` 規則不會超越專案或受管檔案中的 `ask` 規則;[權限規則如何合併](/docs/zh-TW/permissions#settings-precedence)解釋了順序。在 VS Code 擴充功能中,核准卡讓您選擇目標檔案,包括專案的共用檔案,這會為每個人變更規則;在 CLI 中,Claude Code 僅寫入您的本機檔案。
780* **您的組織的允許規則仍然與您的規則一起應用。** 這是預期的:Claude Code 在範圍內合併 [`permissions.allow`](/docs/zh-TW/settings-reference#permissions-allow),除非您的組織設定 [`allowManagedPermissionRulesOnly`](/docs/zh-TW/settings-reference#allowmanagedpermissionrulesonly)。298* **您的組織的允許規則仍然與您的規則一起應用。** 這是預期的:Claude Code 在範圍內合併 [`permissions.allow`](/docs/zh-TW/settings-reference#permissions-allow),除非您的組織設定 [`allowManagedPermissionRulesOnly`](/docs/zh-TW/settings-reference#allowmanagedpermissionrulesonly)。
781 299
782<span id="security-keys-where-the-stricter-value-applies" />300### 受管設定優先順序的例外
783
784<h3 id="exceptions-to-managed-settings-precedence">
785 受管設定優先順序的例外
786</h3>
787 301
788對於少數值限制工作階段的鍵,Claude Code 尊重來自範圍的限制值,該範圍在其他情況下無法覆寫受管設定。在此表中找到鍵以查看它尊重哪個值以及來自何處。302對於少數值限制工作階段的鍵,Claude Code 尊重來自範圍的限制值,該範圍在其他情況下無法覆寫受管設定。在此表中找到鍵以查看它尊重哪個值以及來自何處。
789 303
803 317
804在自身內部執行 Claude Code 並設定 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/zh-TW/env-vars) 的應用程式也是例外。Claude Code 採用該應用程式的模型設定而不是來自每個受管來源的 `model`、`fallbackModel`、`modelPicker` 和 `modelOverrides` 鍵,以及受管 `env` 區塊中的模型選擇變數,例如 `ANTHROPIC_MODEL` 和 `ANTHROPIC_DEFAULT_*_MODEL` 系列。Claude Code 保持受管 [`availableModels`](/docs/zh-TW/settings-reference#availablemodels) 允許清單有效,除非應用程式提供自己的。318在自身內部執行 Claude Code 並設定 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/zh-TW/env-vars) 的應用程式也是例外。Claude Code 採用該應用程式的模型設定而不是來自每個受管來源的 `model`、`fallbackModel`、`modelPicker` 和 `modelOverrides` 鍵,以及受管 `env` 區塊中的模型選擇變數,例如 `ANTHROPIC_MODEL` 和 `ANTHROPIC_DEFAULT_*_MODEL` 系列。Claude Code 保持受管 [`availableModels`](/docs/zh-TW/settings-reference#availablemodels) 允許清單有效,除非應用程式提供自己的。
805 319
806<h2 id="settings-in-cloud-sessions">320## 雲端工作階段中的設定
807 雲端工作階段中的設定
808</h2>
809 321
810[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)在[雲端環境](/docs/zh-TW/cloud-environments)中執行,在您儲存庫的新複製上,而不是在您的機器上。這改變了哪些設定到達它:322[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)在[雲端環境](/docs/zh-TW/cloud-environments)中執行,在您儲存庫的新複製上,而不是在您的機器上。這改變了哪些設定到達它:
811 323
816 328
817[從您的設定進行的內容](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup)列出其餘部分:`CLAUDE.md`、skills、MCP 伺服器、plugins 和認證。329[從您的設定進行的內容](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup)列出其餘部分:`CLAUDE.md`、skills、MCP 伺服器、plugins 和認證。
818 330
819<h2 id="what’s-next">331## 下一步
820 下一步
821</h2>
822 332
823* [所有設定](/docs/zh-TW/settings-reference):每個金鑰,及其設定位置和範例333* [所有設定](/docs/zh-TW/settings-reference):每個金鑰,及其設定位置和範例
824* [範例設定檔案](/docs/zh-TW/settings-example):個人檔案、團隊檔案和組織的受管檔案334* [範例設定檔案](/docs/zh-TW/settings-example):個人檔案、團隊檔案和組織的受管檔案