SpyBara
Go Premium

settings.md 2026-05-12 22:57 UTC to 2026-05-13 23:01 UTC

6 added, 4 removed.

2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

Claude Code ์„ค์ •

์ „์—ญ ๋ฐ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€ ์„ค์ •๊ณผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ Claude Code๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Claude Code๋Š” ์‚ฌ์šฉ์ž์˜ ํ•„์š”์— ๋งž๊ฒŒ ๋™์ž‘์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์„ค์ •์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ™”ํ˜• REPL์„ ์‚ฌ์šฉํ•  ๋•Œ /config ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ Claude Code๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ƒํƒœ ์ •๋ณด๋ฅผ ๋ณด๊ณ  ๊ตฌ์„ฑ ์˜ต์…˜์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํƒญ ํ˜•์‹์˜ ์„ค์ • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ๋ฒ”์œ„

Claude Code๋Š” ๋ฒ”์œ„ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ์ด ์–ด๋””์— ์ ์šฉ๋˜๊ณ  ๋ˆ„๊ฐ€ ๊ณต์œ ํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ”์œ„๋ฅผ ์ดํ•ดํ•˜๋ฉด ๊ฐœ์ธ ์‚ฌ์šฉ, ํŒ€ ํ˜‘์—… ๋˜๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด Claude Code๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„

๋ฒ”์œ„ ์œ„์น˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋Œ€์ƒ ํŒ€๊ณผ ๊ณต์œ ?
Managed ์„œ๋ฒ„ ๊ด€๋ฆฌ ์„ค์ •, plist / ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋˜๋Š” ์‹œ์Šคํ…œ ์ˆ˜์ค€ managed-settings.json ๋จธ์‹ ์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์˜ˆ (IT์—์„œ ๋ฐฐํฌ)
User ~/.claude/ ๋””๋ ‰ํ† ๋ฆฌ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ์ž ์•„๋‹ˆ์˜ค
Project ์ €์žฅ์†Œ์˜ .claude/ ์ด ์ €์žฅ์†Œ์˜ ๋ชจ๋“  ํ˜‘์—…์ž ์˜ˆ (git์— ์ปค๋ฐ‹๋จ)
Local .claude/settings.local.json ์ด ์ €์žฅ์†Œ์—์„œ๋งŒ ์‚ฌ์šฉ์ž ์•„๋‹ˆ์˜ค (gitignored)

๊ฐ ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ

Managed ๋ฒ”์œ„๋Š” ๋‹ค์Œ์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค:

  • ์กฐ์ง ์ „์ฒด์—์„œ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ณด์•ˆ ์ •์ฑ…
  • ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†๋Š” ๊ทœ์ • ์ค€์ˆ˜ ์š”๊ตฌ ์‚ฌํ•ญ
  • IT/DevOps์—์„œ ๋ฐฐํฌํ•œ ํ‘œ์ค€ํ™”๋œ ๊ตฌ์„ฑ

User ๋ฒ”์œ„๋Š” ๋‹ค์Œ์— ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค:

  • ๋ชจ๋“  ๊ณณ์—์„œ ์›ํ•˜๋Š” ๊ฐœ์ธ ์„ค์ • (ํ…Œ๋งˆ, ํŽธ์ง‘๊ธฐ ์„ค์ •)
  • ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ
  • API ํ‚ค ๋ฐ ์ธ์ฆ (์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅ๋จ)

Project ๋ฒ”์œ„๋Š” ๋‹ค์Œ์— ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค:

  • ํŒ€ ๊ณต์œ  ์„ค์ • (๊ถŒํ•œ, hooks, MCP servers)
  • ์ „์ฒด ํŒ€์ด ๊ฐ€์ ธ์•ผ ํ•  ํ”Œ๋Ÿฌ๊ทธ์ธ
  • ํ˜‘์—…์ž ๊ฐ„ ๋„๊ตฌ ํ‘œ์ค€ํ™”

Local ๋ฒ”์œ„๋Š” ๋‹ค์Œ์— ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค:

  • ํŠน์ • ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ฐœ์ธ ์žฌ์ •์˜
  • ํŒ€๊ณผ ๊ณต์œ ํ•˜๊ธฐ ์ „์— ๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ
  • ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋จธ์‹  ํŠน์ • ์„ค์ •

๋ฒ”์œ„๊ฐ€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹

๋™์ผํ•œ ์„ค์ •์ด ์—ฌ๋Ÿฌ ๋ฒ”์œ„์—์„œ ๊ตฌ์„ฑ๋˜๋ฉด Claude Code๋Š” ์šฐ์„ ์ˆœ์œ„ ์ˆœ์„œ๋Œ€๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค:

  1. Managed (์ตœ๊ณ ) - ์•„๋ฌด๊ฒƒ๋„ ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†์Œ
  2. ๋ช…๋ น์ค„ ์ธ์ˆ˜ - ์ž„์‹œ ์„ธ์…˜ ์žฌ์ •์˜
  3. Local - ํ”„๋กœ์ ํŠธ ๋ฐ ์‚ฌ์šฉ์ž ์„ค์ • ์žฌ์ •์˜
  4. Project - ์‚ฌ์šฉ์ž ์„ค์ • ์žฌ์ •์˜
  5. User (์ตœ์ €) - ๋‹ค๋ฅธ ๊ฒƒ์ด ์„ค์ •์„ ์ง€์ •ํ•˜์ง€ ์•Š์„ ๋•Œ ์ ์šฉ

์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž ์„ค์ •์—์„œ spinnerTipsEnabled๋ฅผ true๋กœ ์„ค์ •ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ์„ค์ •์—์„œ false๋กœ ์„ค์ •ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๊ฐ’์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ๊ทœ์น™์€ ์žฌ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ๋ฒ”์œ„ ์ „์ฒด์—์„œ ๋ณ‘ํ•ฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ • ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

๋ฒ”์œ„๋Š” ๋งŽ์€ Claude Code ๊ธฐ๋Šฅ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค:

๊ธฐ๋Šฅ ์‚ฌ์šฉ์ž ์œ„์น˜ ํ”„๋กœ์ ํŠธ ์œ„์น˜ Local ์œ„์น˜
Settings ~/.claude/settings.json .claude/settings.json .claude/settings.local.json
Subagents ~/.claude/agents/ .claude/agents/ ์—†์Œ
MCP servers ~/.claude.json .mcp.json ~/.claude.json (ํ”„๋กœ์ ํŠธ๋ณ„)
Plugins ~/.claude/settings.json .claude/settings.json .claude/settings.local.json
CLAUDE.md ~/.claude/CLAUDE.md CLAUDE.md ๋˜๋Š” .claude/CLAUDE.md CLAUDE.local.md

Windows์—์„œ ~/.claude๋กœ ํ‘œ์‹œ๋œ ๊ฒฝ๋กœ๋Š” %USERPROFILE%\.claude๋กœ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.


์„ค์ • ํŒŒ์ผ

settings.json ํŒŒ์ผ์€ ๊ณ„์ธต์  ์„ค์ •์„ ํ†ตํ•ด Claude Code๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ณต์‹ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค:

  • ์‚ฌ์šฉ์ž ์„ค์ •์€ ~/.claude/settings.json์— ์ •์˜๋˜๋ฉฐ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœ์ ํŠธ ์„ค์ •์€ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค:

    • ์†Œ์Šค ์ œ์–ด์— ์ฒดํฌ์ธ๋˜๊ณ  ํŒ€๊ณผ ๊ณต์œ ๋˜๋Š” ์„ค์ •์„ ์œ„ํ•œ .claude/settings.json
    • ์ฒดํฌ์ธ๋˜์ง€ ์•Š์€ ์„ค์ •์„ ์œ„ํ•œ .claude/settings.local.json์œผ๋กœ, ๊ฐœ์ธ ์„ค์ • ๋ฐ ์‹คํ—˜์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. Claude Code๋Š” .claude/settings.local.json์ด ์ƒ์„ฑ๋  ๋•Œ git์„ ๊ตฌ์„ฑํ•˜์—ฌ ์ด๋ฅผ ๋ฌด์‹œํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • Managed ์„ค์ •: ์ค‘์•™ ์ง‘์ค‘์‹ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ์กฐ์ง์˜ ๊ฒฝ์šฐ Claude Code๋Š” managed ์„ค์ •์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ ์ „๋‹ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ๋™์ผํ•œ JSON ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์‚ฌ์šฉ์ž ๋˜๋Š” ํ”„๋กœ์ ํŠธ ์„ค์ •์œผ๋กœ ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค:

    • ์„œ๋ฒ„ ๊ด€๋ฆฌ ์„ค์ •: Anthropic์˜ ์„œ๋ฒ„์—์„œ Claude.ai ๊ด€๋ฆฌ ์ฝ˜์†”์„ ํ†ตํ•ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๊ด€๋ฆฌ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    • MDM/OS ์ˆ˜์ค€ ์ •์ฑ…: macOS ๋ฐ Windows์˜ ๊ธฐ๋ณธ ์žฅ์น˜ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค:

      • macOS: com.anthropic.claudecode managed preferences domain. plist์˜ ์ตœ์ƒ์œ„ ํ‚ค๋Š” managed-settings.json์„ ๋ฐ˜์˜ํ•˜๋ฉฐ, ์ค‘์ฒฉ๋œ ์„ค์ •์€ ๋”•์…”๋„ˆ๋ฆฌ์ด๊ณ  ๋ฐฐ์—ด์€ plist ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. Jamf, Kandji (Iru) ๋˜๋Š” ์œ ์‚ฌํ•œ MDM ๋„๊ตฌ์˜ ๊ตฌ์„ฑ ํ”„๋กœํ•„์„ ํ†ตํ•ด ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
      • Windows: HKLM\SOFTWARE\Policies\ClaudeCode ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ค์™€ JSON์„ ํฌํ•จํ•˜๋Š” Settings ๊ฐ’ (REG_SZ ๋˜๋Š” REG_EXPAND_SZ) (๊ทธ๋ฃน ์ •์ฑ… ๋˜๋Š” Intune์„ ํ†ตํ•ด ๋ฐฐํฌ)
      • Windows (์‚ฌ์šฉ์ž ์ˆ˜์ค€): HKCU\SOFTWARE\Policies\ClaudeCode (์ตœ์ € ์ •์ฑ… ์šฐ์„ ์ˆœ์œ„, ๊ด€๋ฆฌ์ž ์ˆ˜์ค€ ์†Œ์Šค๊ฐ€ ์—†์„ ๋•Œ๋งŒ ์‚ฌ์šฉ)
    • ํŒŒ์ผ ๊ธฐ๋ฐ˜: ์‹œ์Šคํ…œ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ฐฐํฌ๋œ managed-settings.json ๋ฐ managed-mcp.json:

      • macOS: /Library/Application Support/ClaudeCode/
      • Linux ๋ฐ WSL: /etc/claude-code/
      • Windows: C:\Program Files\ClaudeCode\

      ํŒŒ์ผ ๊ธฐ๋ฐ˜ managed ์„ค์ •์€ managed-settings.json๊ณผ ๋™์ผํ•œ ์‹œ์Šคํ…œ ๋””๋ ‰ํ† ๋ฆฌ์— managed-settings.d/ ๋“œ๋กญ์ธ ๋””๋ ‰ํ† ๋ฆฌ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณ„๋„์˜ ํŒ€์ด ๋‹จ์ผ ํŒŒ์ผ ํŽธ์ง‘์„ ์กฐ์ •ํ•˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์ธ ์ •์ฑ… ์กฐ๊ฐ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      systemd ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ฉด managed-settings.json์ด ๋จผ์ € ๊ธฐ๋ณธ์œผ๋กœ ๋ณ‘ํ•ฉ๋˜๊ณ , ๋“œ๋กญ์ธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  *.json ํŒŒ์ผ์ด ์•ŒํŒŒ๋ฒณ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์œ„์— ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ์Šค์นผ๋ผ ๊ฐ’์˜ ๊ฒฝ์šฐ ๋‚˜์ค‘ ํŒŒ์ผ์ด ์ด์ „ ํŒŒ์ผ์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ์—ฐ๊ฒฐ๋˜๊ณ  ์ค‘๋ณต ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” ๊นŠ๊ฒŒ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. .๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆจ๊ฒจ์ง„ ํŒŒ์ผ์€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

      ๋ณ‘ํ•ฉ ์ˆœ์„œ๋ฅผ ์ œ์–ดํ•˜๋ ค๋ฉด ์ˆซ์ž ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: 10-telemetry.json ๋ฐ 20-security.json).

    managed ์„ค์ • ๋ฐ Managed MCP ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์ด ์ €์žฅ์†Œ์—๋Š” Jamf, Kandji (Iru), Intune ๋ฐ ๊ทธ๋ฃน ์ •์ฑ…์— ๋Œ€ํ•œ ์‹œ์ž‘ ๋ฐฐํฌ ํ…œํ”Œ๋ฆฟ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ํ•„์š”์— ๋งž๊ฒŒ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐํƒ€ ๊ตฌ์„ฑ์€ ~/.claude.json์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์—๋Š” OAuth ์„ธ์…˜, MCP server ๊ตฌ์„ฑ (์‚ฌ์šฉ์ž ๋ฐ local ๋ฒ”์œ„), ํ”„๋กœ์ ํŠธ๋ณ„ ์ƒํƒœ (ํ—ˆ์šฉ๋œ ๋„๊ตฌ, ์‹ ๋ขฐ ์„ค์ •) ๋ฐ ๋‹ค์–‘ํ•œ ์บ์‹œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„ MCP ์„œ๋ฒ„๋Š” .mcp.json์— ๋ณ„๋„๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test *)",
      "Read(~/.zshrc)"
    ],
    "deny": [
      "Bash(curl *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)"
    ]
  },
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp"
  },
  "companyAnnouncements": [
    "Welcome to Acme Corp! Review our code guidelines at docs.acme.com",
    "Reminder: Code reviews required for all PRs",
    "New security policy in effect"
  ]
}

์œ„์˜ ์˜ˆ์ œ์—์„œ $schema ์ค„์€ Claude Code ์„ค์ •์— ๋Œ€ํ•œ ๊ณต์‹ JSON ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ์ด๋ฅผ settings.json์— ์ถ”๊ฐ€ํ•˜๋ฉด VS Code, Cursor ๋ฐ JSON ์Šคํ‚ค๋งˆ ๊ฒ€์ฆ์„ ์ง€์›ํ•˜๋Š” ๋‹ค๋ฅธ ํŽธ์ง‘๊ธฐ์—์„œ ์ž๋™ ์™„์„ฑ ๋ฐ ์ธ๋ผ์ธ ๊ฒ€์ฆ์ด ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

๊ฒŒ์‹œ๋œ ์Šคํ‚ค๋งˆ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋ฉฐ ๊ฐ€์žฅ ์ตœ๊ทผ CLI ๋ฆด๋ฆฌ์Šค์—์„œ ์ถ”๊ฐ€๋œ ์„ค์ •์„ ํฌํ•จํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ตœ๊ทผ์— ๋ฌธ์„œํ™”๋œ ํ•„๋“œ์— ๋Œ€ํ•œ ๊ฒ€์ฆ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ตฌ์„ฑ์ด ์œ ํšจํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„ค์ •

settings.json์€ ์—ฌ๋Ÿฌ ์˜ต์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:

ํ‚ค ์„ค๋ช… ์˜ˆ์ œ
agent ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ๋ช…๋ช…๋œ subagent๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น subagent์˜ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ, ๋„๊ตฌ ์ œํ•œ ๋ฐ ๋ชจ๋ธ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. subagents ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœ์„ ์ฐธ์กฐํ•˜์„ธ์š” "code-reviewer"
allowedChannelPlugins (Managed ์„ค์ •๋งŒ) ๋ฉ”์‹œ์ง€๋ฅผ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์ฑ„๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ํ—ˆ์šฉ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์„ค์ •๋˜๋ฉด ๊ธฐ๋ณธ Anthropic ํ—ˆ์šฉ ๋ชฉ๋ก์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ •์˜๋˜์ง€ ์•Š์Œ = ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํด๋ฐฑ, ๋นˆ ๋ฐฐ์—ด = ๋ชจ๋“  ์ฑ„๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฐจ๋‹จ. channelsEnabled: true๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฑ„๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹คํ–‰ ์ œํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š” [{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]
allowedHttpHookUrls HTTP hooks๊ฐ€ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” URL ํŒจํ„ด์˜ ํ—ˆ์šฉ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. *๋ฅผ ์™€์ผ๋“œ์นด๋“œ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •๋˜๋ฉด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” URL์„ ๊ฐ€์ง„ hooks๋Š” ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ •์˜๋˜์ง€ ์•Š์Œ = ์ œํ•œ ์—†์Œ, ๋นˆ ๋ฐฐ์—ด = ๋ชจ๋“  HTTP hooks ์ฐจ๋‹จ. ๋ฐฐ์—ด์€ ์„ค์ • ์†Œ์Šค ์ „์ฒด์—์„œ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. Hook ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š” ["https://hooks.example.com/*"]
allowedMcpServers Managed ์„ค์ •์—์„œ ์„ค์ •๋˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” MCP ์„œ๋ฒ„์˜ ํ—ˆ์šฉ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์ •์˜๋˜์ง€ ์•Š์Œ = ์ œํ•œ ์—†์Œ, ๋นˆ ๋ฐฐ์—ด = ์ž ๊ธˆ. ๋ชจ๋“  ๋ฒ”์œ„์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฑฐ๋ถ€ ๋ชฉ๋ก์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. Managed MCP ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š” [{ "serverName": "github" }]
allowManagedHooksOnly (Managed ์„ค์ •๋งŒ) Managed hooks, SDK hooks ๋ฐ managed ์„ค์ • enabledPlugins์—์„œ ๊ฐ•์ œ ํ™œ์„ฑํ™”๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ hooks๋งŒ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž, ํ”„๋กœ์ ํŠธ ๋ฐ ๋‹ค๋ฅธ ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ hooks๋Š” ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. Hook ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š” true
allowManagedMcpServersOnly (Managed ์„ค์ •๋งŒ) Managed ์„ค์ •์˜ allowedMcpServers๋งŒ ์กด์ค‘๋ฉ๋‹ˆ๋‹ค. deniedMcpServers๋Š” ์—ฌ์ „ํžˆ ๋ชจ๋“  ์†Œ์Šค์—์„œ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ MCP ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ด€๋ฆฌ์ž ์ •์˜ ํ—ˆ์šฉ ๋ชฉ๋ก๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. Managed MCP ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š” true
allowManagedPermissionRulesOnly (Managed ์„ค์ •๋งŒ) ์‚ฌ์šฉ์ž ๋ฐ ํ”„๋กœ์ ํŠธ ์„ค์ •์ด allow, ask ๋˜๋Š” deny ๊ถŒํ•œ ๊ทœ์น™์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. Managed ์„ค์ •์˜ ๊ทœ์น™๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. Managed ์ „์šฉ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š” true
alwaysThinkingEnabled ๋ชจ๋“  ์„ธ์…˜์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™•์žฅ ์‚ฌ๊ณ ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ง์ ‘ ํŽธ์ง‘ํ•˜๊ธฐ๋ณด๋‹ค๋Š” /config ๋ช…๋ น์„ ํ†ตํ•ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ๊ณ ๋ฅผ ๊ฐ•์ œ๋กœ ๋„๋ ค๋ฉด env์—์„œ CLAUDE_CODE_DISABLE_THINKING์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค true
apiKeyHelper /bin/sh์—์„œ ์‹คํ–‰๋  ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ธ์ฆ ๊ฐ’์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ๋ชจ๋ธ ์š”์ฒญ์— ๋Œ€ํ•ด X-Api-Key ๋ฐ Authorization: Bearer ํ—ค๋”๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. CLAUDE_CODE_API_KEY_HELPER_TTL_MS๋กœ ์ƒˆ๋กœ๊ณ ์นจ ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค /bin/generate_temp_api_key.sh
attribution git ์ปค๋ฐ‹ ๋ฐ pull request์— ๋Œ€ํ•œ attribution์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. Attribution ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š” {"commit": "๐Ÿค– Generated with Claude Code", "pr": ""}
autoMemoryDirectory ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ๋ฅผ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ๊ฒฝ๋กœ ๋˜๋Š” ~/ ์ ‘๋‘์‚ฌ ๊ฒฝ๋กœ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ •์ฑ… ๋ฐ ์‚ฌ์šฉ์ž ์„ค์ •๊ณผ --settings ํ”Œ๋ž˜๊ทธ์—์„œ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋œ ์ €์žฅ์†Œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์“ฐ๊ธฐ๋ฅผ ๋ฏผ๊ฐํ•œ ์œ„์น˜๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ ๋˜๋Š” local ์„ค์ •์—์„œ๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค "~/my-memory-dir"
autoMemoryEnabled ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. false์ผ ๋•Œ Claude๋Š” ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ฝ๊ฑฐ๋‚˜ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: true. ์„ธ์…˜ ์ค‘์— /memory๋กœ๋„ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด env์—์„œ CLAUDE_CODE_DISABLE_AUTO_MEMORY๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค false
autoMode ์ž๋™ ๋ชจ๋“œ ๋ถ„๋ฅ˜๊ธฐ๊ฐ€ ์ฐจ๋‹จํ•˜๊ณ  ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. environment, allow, soft_deny ๋ฐ hard_deny ๋ฐฐ์—ด์˜ ์‚ฐ๋ฌธ ๊ทœ์น™์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์— ๋ฆฌํ„ฐ๋Ÿด ๋ฌธ์ž์—ด "$defaults"๋ฅผ ํฌํ•จํ•˜์—ฌ ํ•ด๋‹น ์œ„์น˜์—์„œ ๊ธฐ๋ณธ ์ œ๊ณต ๊ทœ์น™์„ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ ๋ชจ๋“œ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ๊ณต์œ  ํ”„๋กœ์ ํŠธ ์„ค์ •์—์„œ๋Š” ์ฝ์ง€ ์•Š์Œ {"soft_deny": ["$defaults", "Never run terraform apply"]}
autoScrollEnabled fullscreen ๋ Œ๋”๋ง์—์„œ ์ƒˆ ์ถœ๋ ฅ์„ ๋Œ€ํ™”์˜ ๋งจ ์•„๋ž˜๋กœ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: true. /config์— ์ž๋™ ์Šคํฌ๋กค๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊บผ์ ธ ์žˆ์„ ๋•Œ๋„ ๊ถŒํ•œ ํ”„๋กฌํ”„ํŠธ๋Š” ์—ฌ์ „ํžˆ ๋ณด๊ธฐ๋กœ ์Šคํฌ๋กค๋ฉ๋‹ˆ๋‹ค false
autoUpdatesChannel ์—…๋ฐ์ดํŠธ๋ฅผ ๋”ฐ๋ฅผ ๋ฆด๋ฆฌ์Šค ์ฑ„๋„์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์•ฝ 1์ฃผ์ผ ๋œ ๋ฒ„์ „์ด๊ณ  ์ฃผ์š” ํšŒ๊ท€๊ฐ€ ์žˆ๋Š” ๋ฒ„์ „์„ ๊ฑด๋„ˆ๋›ฐ๋Š” "stable"์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฐ€์žฅ ์ตœ๊ทผ ๋ฆด๋ฆฌ์Šค์ธ "latest" (๊ธฐ๋ณธ๊ฐ’)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ ์—…๋ฐ์ดํŠธ๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด env์—์„œ DISABLE_AUTOUPDATER๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค "stable"
availableModels /model, --model ๋˜๋Š” ANTHROPIC_MODEL์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ธ์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์˜ต์…˜์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ ์„ ํƒ ์ œํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š” ["sonnet", "haiku"]
awaySummaryEnabled ๋ช‡ ๋ถ„ ๋™์•ˆ ํ„ฐ๋ฏธ๋„์—์„œ ๋–จ์–ด์ ธ ์žˆ๋‹ค๊ฐ€ ๋Œ์•„์˜ฌ ๋•Œ ํ•œ ์ค„ ์„ธ์…˜ ์š”์•ฝ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด false๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ /config์—์„œ ์„ธ์…˜ ์š”์•ฝ์„ ๋•๋‹ˆ๋‹ค. CLAUDE_CODE_ENABLE_AWAY_SUMMARY์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค true
awsAuthRefresh .aws ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํฌ๋ฆฝํŠธ (๊ณ ๊ธ‰ ์ž๊ฒฉ ์ฆ๋ช… ๊ตฌ์„ฑ ์ฐธ์กฐ) aws sso login --profile myprofile
awsCredentialExport AWS ์ž๊ฒฉ ์ฆ๋ช…์ด ํฌํ•จ๋œ JSON์„ ์ถœ๋ ฅํ•˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํฌ๋ฆฝํŠธ (๊ณ ๊ธ‰ ์ž๊ฒฉ ์ฆ๋ช… ๊ตฌ์„ฑ ์ฐธ์กฐ) /bin/generate_aws_grant.sh
blockedMarketplaces (Managed ์„ค์ •๋งŒ) ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์†Œ์Šค์˜ ์ฐจ๋‹จ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ถ”๊ฐ€ ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜, ์—…๋ฐ์ดํŠธ, ์ƒˆ๋กœ๊ณ ์นจ ๋ฐ ์ž๋™ ์—…๋ฐ์ดํŠธ์— ์ ์šฉ๋˜๋ฏ€๋กœ ์ •์ฑ…์ด ์„ค์ •๋˜๊ธฐ ์ „์— ์ถ”๊ฐ€๋œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฐจ๋‹จ๋œ ์†Œ์Šค๋Š” ๋‹ค์šด๋กœ๋“œ ์ „์— ํ™•์ธ๋˜๋ฏ€๋กœ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋‹ฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Managed ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ œํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š” [{ "source": "github", "repo": "untrusted/plugins" }]
channelsEnabled (Managed ์„ค์ •๋งŒ) ์กฐ์ง์„ ์œ„ํ•ด channels๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. Claude.ai Team ๋ฐ Enterprise ํ”Œ๋žœ์—์„œ ์„ค์ •๋˜์ง€ ์•Š๊ฑฐ๋‚˜ false์ด๋ฉด ์ฑ„๋„์ด ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. Anthropic Console ๊ณ„์ •์ด API ํ‚ค ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์กฐ์ง์ด managed ์„ค์ •์„ ๋ฐฐํฌํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฑ„๋„์ด ํ—ˆ์šฉ๋˜๋ฉฐ, ์ด ๊ฒฝ์šฐ ์ด ํ‚ค๋ฅผ true๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค true
claudeMd (Managed ์„ค์ •๋งŒ) ์กฐ์ง ๊ด€๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ฃผ์ž…๋œ CLAUDE.md ์Šคํƒ€์ผ ์ง€์นจ์ž…๋‹ˆ๋‹ค. Managed ๋˜๋Š” ์ •์ฑ… ์„ค์ •์—์„œ ์„ค์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋˜๋ฉฐ ์‚ฌ์šฉ์ž, ํ”„๋กœ์ ํŠธ ๋ฐ local ์„ค์ •์—์„œ๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ์กฐ์ง ์ „์ฒด CLAUDE.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š” "Always run make lint before committing."
claudeMdExcludes ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋กœ๋“œํ•  ๋•Œ ๊ฑด๋„ˆ๋›ธ CLAUDE.md ํŒŒ์ผ์˜ Glob ํŒจํ„ด ๋˜๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ํŒจํ„ด์€ ์ ˆ๋Œ€ ํŒŒ์ผ ๊ฒฝ๋กœ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž, ํ”„๋กœ์ ํŠธ ๋ฐ local ๋ฉ”๋ชจ๋ฆฌ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. managed ์ •์ฑ… ํŒŒ์ผ์€ ์ œ์™ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ["**/vendor/**/CLAUDE.md"]
cleanupPeriodDays ์ด ๊ธฐ๊ฐ„๋ณด๋‹ค ์˜ค๋ž˜๋œ ์„ธ์…˜ ํŒŒ์ผ์€ ์‹œ์ž‘ ์‹œ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค (๊ธฐ๋ณธ๊ฐ’: 30์ผ, ์ตœ์†Œ 1). 0์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๊ฒ€์ฆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‹œ์ž‘ ์‹œ ๊ณ ์•„ subagent worktrees์˜ ์ž๋™ ์ œ๊ฑฐ์— ๋Œ€ํ•œ ๋‚˜์ด ๊ธฐ์ค€์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ ์“ฐ๊ธฐ๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด CLAUDE_CODE_SKIP_PROMPT_HISTORY ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๋น„๋Œ€ํ™”ํ˜• ๋ชจ๋“œ (-p)์—์„œ --no-session-persistence ํ”Œ๋ž˜๊ทธ ๋˜๋Š” persistSession: false SDK ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 20
companyAnnouncements ์‹œ์ž‘ ์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•  ๊ณต์ง€์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ณต์ง€์‚ฌํ•ญ์ด ์ œ๊ณต๋˜๋ฉด ๋ฌด์ž‘์œ„๋กœ ์ˆœํ™˜๋ฉ๋‹ˆ๋‹ค. ["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]
defaultShell ์ž…๋ ฅ ์ƒ์ž ! ๋ช…๋ น์˜ ๊ธฐ๋ณธ ์…ธ์ž…๋‹ˆ๋‹ค. "bash" (๊ธฐ๋ณธ๊ฐ’) ๋˜๋Š” "powershell"์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. "powershell"์„ ์„ค์ •ํ•˜๋ฉด Windows์—์„œ ๋Œ€ํ™”ํ˜• ! ๋ช…๋ น์„ PowerShell์„ ํ†ตํ•ด ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค. CLAUDE_CODE_USE_POWERSHELL_TOOL=1์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. PowerShell ๋„๊ตฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š” "powershell"
deniedMcpServers Managed ์„ค์ •์—์„œ ์„ค์ •๋˜๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ์ฐจ๋‹จ๋œ MCP ์„œ๋ฒ„์˜ ๊ฑฐ๋ถ€ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. Managed ์„œ๋ฒ„๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ๋ฒ”์œ„์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฑฐ๋ถ€ ๋ชฉ๋ก์ด ํ—ˆ์šฉ ๋ชฉ๋ก๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. Managed MCP ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š” [{ "serverName": "filesystem" }]
disableAgentView ๋ฐฐ๊ฒฝ ์—์ด์ „ํŠธ ๋ฐ ์—์ด์ „ํŠธ ๋ณด๊ธฐ๋ฅผ ๋„๋ ค๋ฉด true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค: claude agents, --bg, /background ๋ฐ ์˜จ๋””๋งจ๋“œ ๊ฐ๋…์ž. ์ผ๋ฐ˜์ ์œผ๋กœ managed ์„ค์ •์—์„œ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. CLAUDE_CODE_DISABLE_AGENT_VIEW๋ฅผ 1๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค true
disableAllHooks ๋ชจ๋“  hooks ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ ์ƒํƒœ ์ค„ ๋น„ํ™œ์„ฑํ™” true
disableAutoMode ์ž๋™ ๋ชจ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด "disable"๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. Shift+Tab ์ˆœํ™˜์—์„œ auto๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์‹œ์ž‘ ์‹œ --permission-mode auto๋ฅผ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. managed ์„ค์ •์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†์„ ๋•Œ ๊ฐ€์žฅ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค "disable"
disableDeepLinkRegistration Claude Code๊ฐ€ ์‹œ์ž‘ ์‹œ ์šด์˜ ์ฒด์ œ์— claude-cli:// ํ”„๋กœํ† ์ฝœ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด "disable"๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. Deep links๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์™ธ๋ถ€ ๋„๊ตฌ๊ฐ€ ์‚ฌ์ „ ์ฑ„์›Œ์ง„ ํ”„๋กฌํ”„ํŠธ๋กœ Claude Code ์„ธ์…˜์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก์ด ์ œํ•œ๋˜๊ฑฐ๋‚˜ ๋ณ„๋„๋กœ ๊ด€๋ฆฌ๋˜๋Š” ํ™˜๊ฒฝ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค "disable"
disabledMcpjsonServers .mcp.json ํŒŒ์ผ์—์„œ ๊ฑฐ๋ถ€ํ•  ํŠน์ • MCP ์„œ๋ฒ„ ๋ชฉ๋ก ["filesystem"]
disableRemoteControl {/* min-version: 2.1.128 */}Remote Control ๋น„ํ™œ์„ฑํ™”: claude remote-control, --remote-control ํ”Œ๋ž˜๊ทธ, ์ž๋™ ์‹œ์ž‘ ๋ฐ ์„ธ์…˜ ๋‚ด ์ „ํ™˜์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์žฅ์น˜๋ณ„ MDM ์ ์šฉ์„ ์œ„ํ•ด managed ์„ค์ •์— ๋ฐฐ์น˜๋˜์ง€๋งŒ ๋ชจ๋“  ๋ฒ”์œ„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Claude Code v2.1.128 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค true
disableSkillShellExecution skills ๋ฐ ์‚ฌ์šฉ์ž, ํ”„๋กœ์ ํŠธ, ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” ์ถ”๊ฐ€ ๋””๋ ‰ํ† ๋ฆฌ ์†Œ์Šค์˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋ช…๋ น์—์„œ !`...` ๋ฐ ```! ๋ธ”๋ก์— ๋Œ€ํ•œ ์ธ๋ผ์ธ ์…ธ ์‹คํ–‰์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์€ ์‹คํ–‰๋˜๋Š” ๋Œ€์‹  [shell command execution disabled by policy]๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. ๋ฒˆ๋“ค ๋ฐ managed skills๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. managed ์„ค์ •์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†์„ ๋•Œ ๊ฐ€์žฅ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค true
editorMode ์ž…๋ ฅ ํ”„๋กฌํ”„ํŠธ์˜ ํ‚ค ๋ฐ”์ธ๋”ฉ ๋ชจ๋“œ: "normal" ๋˜๋Š” "vim". ๊ธฐ๋ณธ๊ฐ’: "normal". /config์— ํŽธ์ง‘๊ธฐ ๋ชจ๋“œ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค "vim"
effortLevel ๋…ธ๋ ฅ ์ˆ˜์ค€์„ ์„ธ์…˜ ๊ฐ„์— ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. "low", "medium", "high" ๋˜๋Š” "xhigh"๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. /effort๋ฅผ ์ด๋Ÿฌํ•œ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋กœ ์‹คํ–‰ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. --effort ๋ฐ CLAUDE_CODE_EFFORT_LEVEL์€ ํ•œ ์„ธ์…˜์— ๋Œ€ํ•ด ์ด๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋ ฅ ์ˆ˜์ค€ ์กฐ์ •์—์„œ ์ง€์›๋˜๋Š” ๋ชจ๋ธ์„ ์ฐธ์กฐํ•˜์„ธ์š” "xhigh"
enableAllProjectMcpServers ํ”„๋กœ์ ํŠธ .mcp.json ํŒŒ์ผ์— ์ •์˜๋œ ๋ชจ๋“  MCP ์„œ๋ฒ„๋ฅผ ์ž๋™์œผ๋กœ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค true
enabledMcpjsonServers .mcp.json ํŒŒ์ผ์—์„œ ์Šน์ธํ•  ํŠน์ • MCP ์„œ๋ฒ„ ๋ชฉ๋ก ["memory", "github"]
env ๋ชจ๋“  ์„ธ์…˜์— ์ ์šฉ๋  ํ™˜๊ฒฝ ๋ณ€์ˆ˜ {"FOO": "bar"}
fastModePerSessionOptIn true์ผ ๋•Œ ๋น ๋ฅธ ๋ชจ๋“œ๋Š” ์„ธ์…˜ ๊ฐ„์— ์ง€์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ ์„ธ์…˜์€ ๋น ๋ฅธ ๋ชจ๋“œ๊ฐ€ ๊บผ์ง„ ์ƒํƒœ๋กœ ์‹œ์ž‘๋˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ /fast๋กœ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ๋น ๋ฅธ ๋ชจ๋“œ ์„ค์ •์€ ์—ฌ์ „ํžˆ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์„ธ์…˜๋ณ„ ์˜ตํŠธ์ธ ํ•„์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š” true
feedbackSurveyRate ์„ธ์…˜ ํ’ˆ์งˆ ์„ค๋ฌธ์กฐ์‚ฌ๊ฐ€ ์ ๊ฒฉ์ผ ๋•Œ ๋‚˜ํƒ€๋‚  ํ™•๋ฅ  (0โ€“1). ์™„์ „ํžˆ ์–ต์ œํ•˜๋ ค๋ฉด 0์œผ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ env์—์„œ CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. Bedrock, Vertex ๋˜๋Š” Foundry๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์œ ์šฉํ•˜๋ฉฐ ๊ธฐ๋ณธ ์ƒ˜ํ”Œ ๋ ˆ์ดํŠธ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค 0.05
fileSuggestion @ ํŒŒ์ผ ์ž๋™ ์™„์„ฑ์„ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ์ œ์•ˆ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š” {"type": "command", "command": "~/.claude/file-suggestion.sh"}
forceLoginMethod claudeai๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Claude.ai ๊ณ„์ •์œผ๋กœ๋งŒ ๋กœ๊ทธ์ธ์„ ์ œํ•œํ•˜๊ฑฐ๋‚˜, console์„ ์‚ฌ์šฉํ•˜์—ฌ Claude Console (API ์‚ฌ์šฉ ์ฒญ๊ตฌ) ๊ณ„์ •์œผ๋กœ๋งŒ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค claudeai
forceLoginOrgUUID ๋กœ๊ทธ์ธ์ด ํŠน์ • ์กฐ์ง์— ์†ํ•˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ UUID ๋ฌธ์ž์—ด์„ ํ—ˆ์šฉํ•˜๋ฉฐ, ์ด๋Š” ๋กœ๊ทธ์ธ ์ค‘์— ํ•ด๋‹น ์กฐ์ง์„ ์‚ฌ์ „ ์„ ํƒํ•˜๊ฑฐ๋‚˜, ๋‚˜์—ด๋œ ์กฐ์ง์ด ์‚ฌ์ „ ์„ ํƒ ์—†์ด ํ—ˆ์šฉ๋˜๋Š” UUID ๋ฐฐ์—ด์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. Managed ์„ค์ •์—์„œ ์„ค์ •๋˜๋ฉด ์ธ์ฆ๋œ ๊ณ„์ •์ด ๋‚˜์—ด๋œ ์กฐ์ง์— ์†ํ•˜์ง€ ์•Š์œผ๋ฉด ๋กœ๊ทธ์ธ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๋นˆ ๋ฐฐ์—ด์€ ์‹คํŒจํ•˜๊ณ  ์ž˜๋ชป๋œ ๊ตฌ์„ฑ ๋ฉ”์‹œ์ง€๋กœ ๋กœ๊ทธ์ธ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ๋˜๋Š” ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]
forceRemoteSettingsRefresh (Managed ์„ค์ •๋งŒ) ์›๊ฒฉ managed ์„ค์ •์ด ์„œ๋ฒ„์—์„œ ์ƒˆ๋กœ ๊ฐ€์ ธ์˜ฌ ๋•Œ๊นŒ์ง€ CLI ์‹œ์ž‘์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์บ์‹œ๋œ ๋˜๋Š” ์„ค์ • ์—†์ด ๊ณ„์†ํ•˜๋Š” ๋Œ€์‹  CLI๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฉด ์‹œ์ž‘์ด ์›๊ฒฉ ์„ค์ •์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ์‹คํŒจ ํ์‡„ ์ ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š” true
gcpAuthRefresh GCP Application Default Credentials๊ฐ€ ๋งŒ๋ฃŒ๋˜๊ฑฐ๋‚˜ ๋กœ๋“œํ•  ์ˆ˜ ์—†์„ ๋•Œ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. ๊ณ ๊ธ‰ ์ž๊ฒฉ ์ฆ๋ช… ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š” gcloud auth application-default login
hooks ๋ผ์ดํ”„์‚ฌ์ดํด ์ด๋ฒคํŠธ์—์„œ ์‹คํ–‰ํ•  ์‚ฌ์šฉ์ž ์ •์˜ ๋ช…๋ น์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ˜•์‹์€ hooks ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š” hooks ์ฐธ์กฐ
httpHookAllowedEnvVars HTTP hooks๊ฐ€ ํ—ค๋”์— ๋ณด๊ฐ„ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ด๋ฆ„์˜ ํ—ˆ์šฉ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์„ค์ •๋˜๋ฉด ๊ฐ hook์˜ ์œ ํšจํ•œ allowedEnvVars๋Š” ์ด ์„ค์ •๊ณผ์˜ ๊ต์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ์ •์˜๋˜์ง€ ์•Š์Œ = ์ œํ•œ ์—†์Œ. ๋ฐฐ์—ด์€ ์„ค์ • ์†Œ์Šค ์ „์ฒด์—์„œ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. Hook ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š” ["MY_TOKEN", "HOOK_SECRET"]
includeCoAuthoredBy ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ: ๋Œ€์‹  attribution์„ ์‚ฌ์šฉํ•˜์„ธ์š”. git ์ปค๋ฐ‹ ๋ฐ pull request์— co-authored-by Claude ๋ฐ”์ด๋ผ์ธ์„ ํฌํ•จํ• ์ง€ ์—ฌ๋ถ€ (๊ธฐ๋ณธ๊ฐ’: true) false
includeGitInstructions Claude์˜ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์— ๊ธฐ๋ณธ ์ œ๊ณต ์ปค๋ฐ‹ ๋ฐ PR ์›Œํฌํ”Œ๋กœ์šฐ ์ง€์นจ ๋ฐ git ์ƒํƒœ ์Šค๋ƒ…์ƒท์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค (๊ธฐ๋ณธ๊ฐ’: true). ์˜ˆ๋ฅผ ๋“ค์–ด ์ž์‹ ์˜ git ์›Œํฌํ”Œ๋กœ์šฐ skills์„ ์‚ฌ์šฉํ•  ๋•Œ ์ด๋ฅผ false๋กœ ์„ค์ •ํ•˜์—ฌ ๋‘˜ ๋‹ค ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜๋ฉด ์ด ์„ค์ •๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค false
language Claude์˜ ์„ ํ˜ธ ์‘๋‹ต ์–ธ์–ด๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: "japanese", "spanish", "french"). Claude๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์–ธ์–ด๋กœ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์Œ์„ฑ ๋ฐ›์•„์“ฐ๊ธฐ ์–ธ์–ด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค "japanese"
maxSkillDescriptionChars {/* min-version: 2.1.105 */}Claude๊ฐ€ ๊ฐ ํ„ด์— ๋ณด๋Š” skill ๋ชฉ๋ก์˜ ๊ฒฐํ•ฉ๋œ description ๋ฐ when_to_use ํ…์ŠคํŠธ์— ๋Œ€ํ•œ skill๋ณ„ ๋ฌธ์ž ์ œํ•œ (๊ธฐ๋ณธ๊ฐ’: 1536). ์ด ๊ธธ์ด๋ณด๋‹ค ๊ธด ํ…์ŠคํŠธ๋Š” ์ž˜๋ฆฝ๋‹ˆ๋‹ค. ๋” ๊ธด ์„ค๋ช…์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋†’์ด๊ณ  ํ„ด๋‹น ๋” ๋งŽ์€ ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. skillListingBudgetFraction์— ๋งž์ถ”๋ ค๋ฉด ๋‚ฎ์ถฅ๋‹ˆ๋‹ค. /doctor๋Š” ํ˜„์žฌ ์ž˜๋ฆผ ์ˆ˜์™€ ์˜ํ–ฅ์„ ๋ฐ›๋Š” skills๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. Claude Code v2.1.105 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค 2048
minimumVersion ๋ฐฐ๊ฒฝ ์ž๋™ ์—…๋ฐ์ดํŠธ ๋ฐ claude update๊ฐ€ ์ด ๋ฒ„์ „ ์•„๋ž˜๋กœ ์„ค์น˜๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ํ•˜ํ•œ์ž…๋‹ˆ๋‹ค. "latest" ์ฑ„๋„์—์„œ "stable"๋กœ ์ „ํ™˜ํ•  ๋•Œ /config๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ๋ฒ„์ „์— ๋จธ๋ฌผ๊ธฐ ๋˜๋Š” ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ—ˆ์šฉํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋จธ๋ฌผ๊ธฐ๋ฅผ ์„ ํƒํ•˜๋ฉด ์ด ๊ฐ’์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ managed ์„ค์ •์—์„œ ์กฐ์ง ์ „์ฒด ์ตœ์†Œ๊ฐ’์„ ๊ณ ์ •ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค "2.1.100"
model Claude Code์— ์‚ฌ์šฉํ•  ๊ธฐ๋ณธ ๋ชจ๋ธ์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. --model ๋ฐ ANTHROPIC_MODEL์€ ํ•œ ์„ธ์…˜์— ๋Œ€ํ•ด ์ด๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค "claude-sonnet-4-6"
modelOverrides Anthropic ๋ชจ๋ธ ID๋ฅผ Bedrock ์ถ”๋ก  ํ”„๋กœํ•„ ARN๊ณผ ๊ฐ™์€ ๊ณต๊ธ‰์ž ํŠน์ • ๋ชจ๋ธ ID๋กœ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ชจ๋ธ ์„ ํƒ๊ธฐ ํ•ญ๋ชฉ์€ ๊ณต๊ธ‰์ž API๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋งคํ•‘๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „๋ณ„ ๋ชจ๋ธ ID ์žฌ์ •์˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š” {"claude-opus-4-6": "arn:aws:bedrock:..."}
otelHeadersHelper ๋™์  OpenTelemetry ํ—ค๋”๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. ์‹œ์ž‘ ์‹œ ๋ฐ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS๋กœ ์ƒˆ๋กœ๊ณ ์นจ ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋™์  ํ—ค๋”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š” /bin/generate_otel_headers.sh
outputStyle ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ถœ๋ ฅ ์Šคํƒ€์ผ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ ์Šคํƒ€์ผ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š” "Explanatory"
parentSettingsBehavior {/* min-version: 2.1.133 */}(Managed ์„ค์ •๋งŒ) Agent SDK ๋˜๋Š” IDE ํ™•์žฅ๊ณผ ๊ฐ™์€ embedding host ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ œ๊ณต๋˜๋Š” managed ์„ค์ •์ด ๊ด€๋ฆฌ์ž ๋ฐฐํฌ managed ๊ณ„์ธต๋„ ์žˆ์„ ๋•Œ ์ ์šฉ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. "first-wins": ๋ถ€๋ชจ ์ œ๊ณต ์„ค์ •์ด ์‚ญ์ œ๋˜๊ณ  ๊ด€๋ฆฌ์ž ๊ณ„์ธต๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. "merge": ๋ถ€๋ชจ ์ œ๊ณต ์„ค์ •์ด ๊ด€๋ฆฌ์ž ๊ณ„์ธต ์•„๋ž˜์— ์ ์šฉ๋˜๋ฉฐ, ์ •์ฑ…์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์™„ํ™”ํ•  ์ˆ˜ ์—†๋„๋ก ํ•„ํ„ฐ๋ง๋ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ๊ณ„์ธต์ด ๋ฐฐํฌ๋˜์ง€ ์•Š์œผ๋ฉด ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: "first-wins". Claude Code v2.1.133 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค "merge"
permissions ๊ถŒํ•œ์˜ ๊ตฌ์กฐ๋Š” ์•„๋ž˜ ํ‘œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
plansDirectory ๊ณ„ํš ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ์œ„์น˜๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ๋Š” ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์ƒ๋Œ€์ ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: ~/.claude/plans "./plans"
pluginTrustMessage (Managed ์„ค์ •๋งŒ) ์„ค์น˜ ์ „์— ํ‘œ์‹œ๋˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹ ๋ขฐ ๊ฒฝ๊ณ ์— ์ถ”๊ฐ€๋  ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ง ํŠน์ • ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด๋ถ€ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ฒ€์ฆ๋˜์—ˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. "All plugins from our marketplace are approved by IT"
policyHelper {/* min-version: 2.1.136 */}๊ด€๋ฆฌ์ž ๋ฐฐํฌ ์‹คํ–‰ ํŒŒ์ผ๋กœ ์‹œ์ž‘ ์‹œ managed ์„ค์ •์„ ๋™์ ์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. MDM ๋˜๋Š” ์‹œ์Šคํ…œ managed-settings.json ํŒŒ์ผ์—์„œ๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ •์ฑ… ๋„์šฐ๋ฏธ๋กœ managed ์„ค์ • ๊ณ„์‚ฐ์„ ์ฐธ์กฐํ•˜์„ธ์š”. Claude Code v2.1.136 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค {"path": "/usr/local/bin/claude-policy"}
preferredNotifChannel ์ž‘์—… ์™„๋ฃŒ ๋ฐ ๊ถŒํ•œ ํ”„๋กฌํ”„ํŠธ ์•Œ๋ฆผ ๋ฐฉ๋ฒ•: "auto", "terminal_bell", "iterm2", "iterm2_with_bell", "kitty", "ghostty" ๋˜๋Š” "notifications_disabled". ๊ธฐ๋ณธ๊ฐ’: "auto"๋กœ, iTerm2, Ghostty ๋ฐ Kitty์—์„œ ๋ฐ์Šคํฌํ†ฑ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ณ  ๋‹ค๋ฅธ ํ„ฐ๋ฏธ๋„์—์„œ๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ„ฐ๋ฏธ๋„์—์„œ ๋ฒจ ๋ฌธ์ž๋ฅผ ์šธ๋ฆฌ๋ ค๋ฉด "terminal_bell"์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. /config์— ์•Œ๋ฆผ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„ ๋ฒจ ๋˜๋Š” ์•Œ๋ฆผ ๋ฐ›๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š” "terminal_bell"
prefersReducedMotion ์ ‘๊ทผ์„ฑ์„ ์œ„ํ•ด UI ์• ๋‹ˆ๋ฉ”์ด์…˜ (์Šคํ”ผ๋„ˆ, shimmer, flash ํšจ๊ณผ) ๊ฐ์†Œ ๋˜๋Š” ๋น„ํ™œ์„ฑํ™” true
prUrlTemplate PR ๋ฐฐ์ง€์— ๋Œ€ํ•œ URL ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๋ฐ”๋‹ฅ๊ธ€ ๋ฐ ๋„๊ตฌ ๊ฒฐ๊ณผ ์š”์•ฝ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. gh์—์„œ ๋ณด๊ณ ํ•œ PR URL์—์„œ {host}, {owner}, {repo}, {number} ๋ฐ {url}์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. github.com ๋Œ€์‹  ๋‚ด๋ถ€ ์ฝ”๋“œ ๊ฒ€ํ†  ๋„๊ตฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Claude์˜ ์‚ฐ๋ฌธ์—์„œ #123 ์ž๋™ ๋งํฌ์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค "https://reviews.example.com/{owner}/{repo}/pull/{number}"
respectGitignore @ ํŒŒ์ผ ์„ ํƒ๊ธฐ๊ฐ€ .gitignore ํŒจํ„ด์„ ์กด์ค‘ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. true (๊ธฐ๋ณธ๊ฐ’)์ผ ๋•Œ .gitignore ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ์€ ์ œ์•ˆ์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค false
showClearContextOnPlanAccept ๊ณ„ํš ์ˆ˜๋ฝ ํ™”๋ฉด์—์„œ "์ปจํ…์ŠคํŠธ ์ง€์šฐ๊ธฐ" ์˜ต์…˜์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: false. ์˜ต์…˜์„ ๋ณต์›ํ•˜๋ ค๋ฉด true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค true
showThinkingSummaries ๋Œ€ํ™”ํ˜• ์„ธ์…˜์—์„œ ํ™•์žฅ ์‚ฌ๊ณ  ์š”์•ฝ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •๋˜์ง€ ์•Š๊ฑฐ๋‚˜ false (๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์˜ ๊ธฐ๋ณธ๊ฐ’)์ผ ๋•Œ ์‚ฌ๊ณ  ๋ธ”๋ก์€ API์— ์˜ํ•ด ํŽธ์ง‘๋˜๊ณ  ์ถ•์†Œ๋œ ์Šคํ…์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํŽธ์ง‘์€ ํ‘œ์‹œ๋˜๋Š” ๋‚ด์šฉ๋งŒ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ชจ๋ธ์ด ์ƒ์„ฑํ•˜๋Š” ๋‚ด์šฉ์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๊ณ  ์ง€์ถœ์„ ์ค„์ด๋ ค๋ฉด ์˜ˆ์‚ฐ์„ ๋‚ฎ์ถ”๊ฑฐ๋‚˜ ์‚ฌ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์„ธ์š”. ๋น„๋Œ€ํ™”ํ˜• ๋ชจ๋“œ (-p) ๋ฐ SDK ํ˜ธ์ถœ์ž๋Š” ์ด ์„ค์ •๊ณผ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์š”์•ฝ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค true
showTurnDuration ์‘๋‹ต ํ›„ ํ„ด ์ง€์† ์‹œ๊ฐ„ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: "Cooked for 1m 6s"). ๊ธฐ๋ณธ๊ฐ’: true. /config์— ํ„ด ์ง€์† ์‹œ๊ฐ„ ํ‘œ์‹œ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค false
skillListingBudgetFraction {/* min-version: 2.1.105 */}Claude๊ฐ€ ๊ฐ ํ„ด์— ๋ณด๋Š” skill ๋ชฉ๋ก์„ ์œ„ํ•ด ์˜ˆ์•ฝ๋œ ๋ชจ๋ธ์˜ ์ปจํ…์ŠคํŠธ ์œˆ๋„์šฐ์˜ ๋ถ„์ˆ˜ (๊ธฐ๋ณธ๊ฐ’: 0.01 = 1%). ๋ชฉ๋ก์ด ์˜ˆ์‚ฐ์„ ์ดˆ๊ณผํ•˜๋ฉด ๊ฐ€์žฅ ์ ๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” skills์˜ ์„ค๋ช…์ด ๋ฒ ์–ด ์ด๋ฆ„์œผ๋กœ ์ถ•์†Œ๋˜์–ด Claude๊ฐ€ ์—ฌ์ „ํžˆ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์œ ๋ฅผ ๋ณด์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์„ค๋ช…์„ ๋ณด์ด๋ ค๋ฉด ๋†’์ด๊ณ  ํ„ด๋‹น ๋” ๋งŽ์€ ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ skills์„ maxSkillDescriptionChars ์•„๋ž˜์— ๋งž์ถ”๋ ค๋ฉด ๋‚ฎ์ถฅ๋‹ˆ๋‹ค. /doctor๋Š” ํ˜„์žฌ ์ž˜๋ฆผ ์ˆ˜์™€ ์˜ํ–ฅ์„ ๋ฐ›๋Š” skills๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. Claude Code v2.1.105 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค 0.02
skillOverrides {/* min-version: 2.1.129 */}skill ์ด๋ฆ„์œผ๋กœ ํ‚ค๊ฐ€ ์ง€์ •๋œ skill๋ณ„ ๊ฐ€์‹œ์„ฑ ์žฌ์ •์˜์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ "on", "name-only", "user-invocable-only" ๋˜๋Š” "off"์ž…๋‹ˆ๋‹ค. SKILL.md๋ฅผ ํŽธ์ง‘ํ•˜์ง€ ์•Š๊ณ  skill์„ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ์ถ•์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ skills์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์ด๋Š” /plugin์„ ํ†ตํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. /skills ๋ฉ”๋‰ด๋Š” ์ด๋ฅผ .claude/settings.local.json์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์—์„œ skill ๊ฐ€์‹œ์„ฑ ์žฌ์ •์˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. Claude Code v2.1.129 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค {"legacy-context": "name-only", "deploy": "off"}
skipWebFetchPreflight WebFetch ๋„๋ฉ”์ธ ์•ˆ์ „ ๊ฒ€์‚ฌ๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ์ด ๊ฒ€์‚ฌ๋Š” ๊ฐ ์š”์ฒญ๋œ ํ˜ธ์ŠคํŠธ๋ช…์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— api.anthropic.com์œผ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. Bedrock, Vertex AI ๋˜๋Š” Foundry ๋ฐฐํฌ์™€ ๊ฐ™์ด Anthropic์œผ๋กœ์˜ ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฑด๋„ˆ๋›ฐ๋ฉด WebFetch๋Š” ์ฐจ๋‹จ ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  URL์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค true
spinnerTipsEnabled Claude๊ฐ€ ์ž‘์—… ์ค‘์ผ ๋•Œ ์Šคํ”ผ๋„ˆ์— ํŒ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํŒ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค (๊ธฐ๋ณธ๊ฐ’: true) false
spinnerTipsOverride ์‚ฌ์šฉ์ž ์ •์˜ ๋ฌธ์ž์—ด๋กœ ์Šคํ”ผ๋„ˆ ํŒ์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. tips: ํŒ ๋ฌธ์ž์—ด ๋ฐฐ์—ด. excludeDefault: true์ด๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ ํŒ๋งŒ ํ‘œ์‹œํ•˜๊ณ , false์ด๊ฑฐ๋‚˜ ์—†์œผ๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ ํŒ์ด ๊ธฐ๋ณธ ์ œ๊ณต ํŒ๊ณผ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค { "excludeDefault": true, "tips": ["Use our internal tool X"] }
spinnerVerbs ์Šคํ”ผ๋„ˆ ๋ฐ ํ„ด ์ง€์† ์‹œ๊ฐ„ ๋ฉ”์‹œ์ง€์— ํ‘œ์‹œ๋˜๋Š” ์ž‘์—… ๋™์‚ฌ๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. mode๋ฅผ "replace"๋กœ ์„ค์ •ํ•˜์—ฌ ๋™์‚ฌ๋งŒ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ "append"๋กœ ์„ค์ •ํ•˜์—ฌ ๊ธฐ๋ณธ๊ฐ’์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค {"mode": "append", "verbs": ["Pondering", "Crafting"]}
sshConfigs Desktop ํ™˜๊ฒฝ ๋“œ๋กญ๋‹ค์šด์— ํ‘œ์‹œํ•  SSH ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค. ๊ฐ ํ•ญ๋ชฉ์—๋Š” id, name ๋ฐ sshHost๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, sshPort, sshIdentityFile ๋ฐ startDirectory๋Š” ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. Managed ์„ค์ •์—์„œ ์„ค์ •๋˜๋ฉด ์—ฐ๊ฒฐ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฝ๊ธฐ ์ „์šฉ์ž…๋‹ˆ๋‹ค. Managed ๋ฐ ์‚ฌ์šฉ์ž ์„ค์ •์—์„œ๋งŒ ์ฝ์Œ [{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]
statusLine ์ปจํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ์ƒํƒœ ์ค„์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. statusLine ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š” {"type": "command", "command": "~/.claude/statusline.sh"}
strictKnownMarketplaces (Managed ์„ค์ •๋งŒ) ํ”Œ๋Ÿฌ๊ทธ์ธ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์†Œ์Šค์˜ ํ—ˆ์šฉ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์ •์˜๋˜์ง€ ์•Š์Œ = ์ œํ•œ ์—†์Œ, ๋นˆ ๋ฐฐ์—ด = ์ž ๊ธˆ. ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ถ”๊ฐ€ ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜, ์—…๋ฐ์ดํŠธ, ์ƒˆ๋กœ๊ณ ์นจ ๋ฐ ์ž๋™ ์—…๋ฐ์ดํŠธ์— ์ ์šฉ๋˜๋ฏ€๋กœ ์ •์ฑ…์ด ์„ค์ •๋˜๊ธฐ ์ „์— ์ถ”๊ฐ€๋œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Managed ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ œํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š” [{ "source": "github", "repo": "acme-corp/plugins" }]
syntaxHighlightingDisabled diffs, ์ฝ”๋“œ ๋ธ”๋ก ๋ฐ ํŒŒ์ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์—์„œ ๊ตฌ๋ฌธ ๊ฐ•์กฐ ๋น„ํ™œ์„ฑํ™” true
teammateMode ์—์ด์ „ํŠธ ํŒ€ ํŒ€์›์ด ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹: auto (tmux ๋˜๋Š” iTerm2์—์„œ ๋ถ„ํ•  ์ฐฝ ์„ ํƒ, ๊ทธ ์™ธ์—๋Š” in-process), in-process ๋˜๋Š” tmux. --teammate-mode์€ ํ•œ ์„ธ์…˜์— ๋Œ€ํ•ด ์ด๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํ”Œ๋ ˆ์ด ๋ชจ๋“œ ์„ ํƒ์„ ์ฐธ์กฐํ•˜์„ธ์š” "in-process"
terminalProgressBarEnabled ์ง€์›๋˜๋Š” ํ„ฐ๋ฏธ๋„์—์„œ ํ„ฐ๋ฏธ๋„ ์ง„ํ–‰๋ฅ  ํ‘œ์‹œ์ค„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค: ConEmu, Ghostty 1.2.0+ ๋ฐ iTerm2 3.6.6+. ๊ธฐ๋ณธ๊ฐ’: true. /config์— ํ„ฐ๋ฏธ๋„ ์ง„ํ–‰๋ฅ  ํ‘œ์‹œ์ค„๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค false
tui ํ„ฐ๋ฏธ๋„ UI ๋ Œ๋”๋Ÿฌ์ž…๋‹ˆ๋‹ค. ๊นœ๋ฐ•์ž„ ์—†๋Š” alt-screen ๋ Œ๋”๋Ÿฌ๊ฐ€ ์žˆ๋Š” ๊ฐ€์ƒํ™”๋œ ์Šคํฌ๋กค๋ฐฑ์„ ์œ„ํ•ด "fullscreen"์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์‹ ๋ฉ”์ธ ํ™”๋ฉด ๋ Œ๋”๋Ÿฌ๋ฅผ ์œ„ํ•ด "default"๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. /tui๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. CLAUDE_CODE_NO_FLICKER ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค "fullscreen"
useAutoModeDuringPlan ์ž๋™ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ๊ณ„ํš ๋ชจ๋“œ๊ฐ€ ์ž๋™ ๋ชจ๋“œ ์˜๋ฏธ๋ก ์„ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: true. ๊ณต์œ  ํ”„๋กœ์ ํŠธ ์„ค์ •์—์„œ๋Š” ์ฝ์ง€ ์•Š์Œ. /config์— "๊ณ„ํš ์ค‘ ์ž๋™ ๋ชจ๋“œ ์‚ฌ์šฉ"์œผ๋กœ ํ‘œ์‹œ๋จ false
viewMode ์‹œ์ž‘ ์‹œ ๊ธฐ๋ณธ ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ ๋ณด๊ธฐ ๋ชจ๋“œ: "default", "verbose" ๋˜๋Š” "focus". ์„ค์ •๋˜๋ฉด sticky /focus ์„ ํƒ์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. --verbose ํ”Œ๋ž˜๊ทธ๋Š” ํ•œ ์„ธ์…˜์— ๋Œ€ํ•ด ์ด๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค "verbose"
voice ์Œ์„ฑ ๋ฐ›์•„์“ฐ๊ธฐ ์„ค์ •: enabled๋Š” ๋ฐ›์•„์“ฐ๊ธฐ๋ฅผ ์ผœ๊ณ , mode๋Š” "hold" ๋˜๋Š” "tap"์„ ์„ ํƒํ•˜๊ณ , autoSubmit์€ hold ๋ชจ๋“œ์—์„œ ํ‚ค ๋ฆด๋ฆฌ์Šค ์‹œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. /voice๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. Claude.ai ๊ณ„์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค { "enabled": true, "mode": "tap" }
voiceEnabled voice.enabled์— ๋Œ€ํ•œ ๋ ˆ๊ฑฐ์‹œ ๋ณ„์นญ์ž…๋‹ˆ๋‹ค. voice ๊ฐ์ฒด๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค true
wslInheritsWindowsSettings (Windows managed ์„ค์ •๋งŒ) true์ผ ๋•Œ WSL์˜ Claude Code๋Š” /etc/claude-code์— ์ถ”๊ฐ€ํ•˜์—ฌ Windows ์ •์ฑ… ์ฒด์ธ์—์„œ managed ์„ค์ •์„ ์ฝ์œผ๋ฉฐ Windows ์†Œ์Šค๊ฐ€ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. Windows ๊ด€๋ฆฌ์ž๊ฐ€ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” HKLM ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ค ๋˜๋Š” C:\Program Files\ClaudeCode\managed-settings.json์—์„œ ์„ค์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. HKCU ์ •์ฑ…๋„ WSL์— ์ ์šฉ๋˜๋ ค๋ฉด ํ”Œ๋ž˜๊ทธ๋ฅผ HKCU ์ž์ฒด์—๋„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ Windows์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค true

์ „์—ญ ๊ตฌ์„ฑ ์„ค์ •

์ด๋Ÿฌํ•œ ์„ค์ •์€ settings.json์ด ์•„๋‹Œ ~/.claude.json์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด๋“ค์„ settings.json์— ์ถ”๊ฐ€ํ•˜๋ฉด ์Šคํ‚ค๋งˆ ๊ฒ€์ฆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค ์„ค๋ช… ์˜ˆ์ œ
autoConnectIde Claude Code๊ฐ€ ์™ธ๋ถ€ ํ„ฐ๋ฏธ๋„์—์„œ ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰ ์ค‘์ธ IDE์— ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: false. VS Code ๋˜๋Š” JetBrains ํ„ฐ๋ฏธ๋„ ์™ธ๋ถ€์—์„œ ์‹คํ–‰ํ•  ๋•Œ /config์— **IDE์— ์ž๋™ ์—ฐ๊ฒฐ (์™ธ๋ถ€ ํ„ฐ๋ฏธ๋„)**๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. CLAUDE_CODE_AUTO_CONNECT_IDE ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜๋ฉด ์ด๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค true
autoInstallIdeExtension VS Code ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰ํ•  ๋•Œ Claude Code IDE ํ™•์žฅ์„ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: true. VS Code ๋˜๋Š” JetBrains ํ„ฐ๋ฏธ๋„ ๋‚ด์—์„œ ์‹คํ–‰ํ•  ๋•Œ /config์— IDE ํ™•์žฅ ์ž๋™ ์„ค์น˜๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค false
externalEditorContext Ctrl+G๋กœ ์™ธ๋ถ€ ํŽธ์ง‘๊ธฐ๋ฅผ ์—ด ๋•Œ Claude์˜ ์ด์ „ ์‘๋‹ต์„ # ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ์ปจํ…์ŠคํŠธ๋กœ ์•ž์— ๋ถ™์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: false. /config์— ์™ธ๋ถ€ ํŽธ์ง‘๊ธฐ์— ๋งˆ์ง€๋ง‰ ์‘๋‹ต ํ‘œ์‹œ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค true
teammateDefaultModel ์—์ด์ „ํŠธ ํŒ€ ํŒ€์›์„ ์œ„ํ•œ ๊ธฐ๋ณธ ๋ชจ๋ธ๋กœ spawn ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ•˜๋‚˜๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. "sonnet"๊ณผ ๊ฐ™์€ ๋ชจ๋ธ ๋ณ„์นญ์œผ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ lead์˜ ํ˜„์žฌ /model ์„ ํƒ์„ ์ƒ์†ํ•˜๋ ค๋ฉด null๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. /config์— ๊ธฐ๋ณธ ํŒ€์› ๋ชจ๋ธ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค "sonnet"

Worktree ์„ค์ •

--worktree๊ฐ€ git worktrees๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค ์„ค๋ช… ์˜ˆ์ œ
worktree.baseRef ์ƒˆ worktrees๊ฐ€ ๋ถ„๊ธฐํ•˜๋Š” ref์ž…๋‹ˆ๋‹ค. "fresh" (๊ธฐ๋ณธ๊ฐ’)์€ ๊นจ๋—ํ•œ ํŠธ๋ฆฌ์™€ ์ผ์น˜ํ•˜๋Š” ์›๊ฒฉ์— ๋Œ€ํ•ด origin/<default-branch>์—์„œ ๋ถ„๊ธฐํ•ฉ๋‹ˆ๋‹ค. "head"๋Š” ํ˜„์žฌ local HEAD์—์„œ ๋ถ„๊ธฐํ•˜๋ฏ€๋กœ ํ‘ธ์‹œ๋˜์ง€ ์•Š์€ ์ปค๋ฐ‹ ๋ฐ feature-branch ์ƒํƒœ๊ฐ€ worktree์— ์žˆ์Šต๋‹ˆ๋‹ค. --worktree, EnterWorktree ๋„๊ตฌ ๋ฐ subagent ๊ฒฉ๋ฆฌ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค "head"
worktree.symlinkDirectories ๊ฐ worktree์—์„œ ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์ธ ์ €์žฅ์†Œ์—์„œ symlinkํ•  ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋””๋ ‰ํ† ๋ฆฌ๋Š” symlink๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ["node_modules", ".cache"]
worktree.sparsePaths git sparse-checkout์„ ํ†ตํ•ด ๊ฐ worktree์—์„œ ์ฒดํฌ์•„์›ƒํ•  ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋‚˜์—ด๋œ ๊ฒฝ๋กœ๋งŒ ๋””์Šคํฌ์— ์ž‘์„ฑ๋˜๋ฏ€๋กœ ๋Œ€๊ทœ๋ชจ monorepos์—์„œ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค ["packages/my-app", "shared/utils"]

worktrees์— .env์™€ ๊ฐ™์€ gitignored ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋ ค๋ฉด ์„ค์ • ๋Œ€์‹  ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ .worktreeinclude ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ถŒํ•œ ์„ค์ •

ํ‚ค ์„ค๋ช… ์˜ˆ์ œ
allow ๋„๊ตฌ ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ถŒํ•œ ๊ทœ์น™ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ํŒจํ„ด ๋งค์นญ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ์•„๋ž˜ ๊ถŒํ•œ ๊ทœ์น™ ๊ตฌ๋ฌธ์„ ์ฐธ์กฐํ•˜์„ธ์š” [ "Bash(git diff *)" ]
ask ๋„๊ตฌ ์‚ฌ์šฉ ์‹œ ํ™•์ธ์„ ์š”์ฒญํ•˜๋Š” ๊ถŒํ•œ ๊ทœ์น™ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ํŒจํ„ด ๋งค์นญ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ์•„๋ž˜ ๊ถŒํ•œ ๊ทœ์น™ ๊ตฌ๋ฌธ์„ ์ฐธ์กฐํ•˜์„ธ์š” [ "Bash(git push *)" ]
deny ๋„๊ตฌ ์‚ฌ์šฉ์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ถŒํ•œ ๊ทœ์น™ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Claude Code ์•ก์„ธ์Šค์—์„œ ๋ฏผ๊ฐํ•œ ํŒŒ์ผ์„ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ๊ทœ์น™ ๊ตฌ๋ฌธ ๋ฐ Bash ๊ถŒํ•œ ์ œํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š” [ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]
additionalDirectories Claude๊ฐ€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ .claude/ ๊ตฌ์„ฑ์€ ์ด๋Ÿฌํ•œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค [ "../docs/" ]
defaultMode Claude Code๋ฅผ ์—ด ๋•Œ ๊ธฐ๋ณธ ๊ถŒํ•œ ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ์œ ํšจํ•œ ๊ฐ’: default, acceptEdits, plan, auto, dontAsk, bypassPermissions. --permission-mode CLI ํ”Œ๋ž˜๊ทธ๋Š” ๋‹จ์ผ ์„ธ์…˜์— ๋Œ€ํ•ด ์ด ์„ค์ •์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค "acceptEdits"
disableBypassPermissionsMode bypassPermissions ๋ชจ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด "disable"๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” --dangerously-skip-permissions ๋ช…๋ น์ค„ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ managed ์„ค์ •์— ๋ฐฐ์น˜๋˜์–ด ์กฐ์ง ์ •์ฑ…์„ ์ ์šฉํ•˜์ง€๋งŒ ๋ชจ๋“  ๋ฒ”์œ„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค "disable"
skipDangerousModePermissionPrompt --dangerously-skip-permissions ๋˜๋Š” defaultMode: "bypassPermissions"๋ฅผ ํ†ตํ•ด bypass permissions ๋ชจ๋“œ์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ํ‘œ์‹œ๋˜๋Š” ํ™•์ธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ €์žฅ์†Œ๊ฐ€ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์šฐํšŒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ ์„ค์ • (.claude/settings.json)์—์„œ ์„ค์ •๋˜๋ฉด ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค true

๊ถŒํ•œ ๊ทœ์น™ ๊ตฌ๋ฌธ

๊ถŒํ•œ ๊ทœ์น™์€ Tool ๋˜๋Š” Tool(specifier) ํ˜•์‹์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๊ทœ์น™์€ ์ˆœ์„œ๋Œ€๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค: ๋จผ์ € ๊ฑฐ๋ถ€ ๊ทœ์น™, ๊ทธ ๋‹ค์Œ ์š”์ฒญ, ๊ทธ ๋‹ค์Œ ํ—ˆ์šฉ. ์ฒซ ๋ฒˆ์งธ ์ผ์น˜ ๊ทœ์น™์ด ์šฐ์Šนํ•ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ์˜ˆ์ œ:

๊ทœ์น™ ํšจ๊ณผ
Bash ๋ชจ๋“  Bash ๋ช…๋ น๊ณผ ์ผ์น˜
Bash(npm run *) npm run์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ช…๋ น๊ณผ ์ผ์น˜
Read(./.env) .env ํŒŒ์ผ ์ฝ๊ธฐ์™€ ์ผ์น˜
WebFetch(domain:example.com) example.com์— ๋Œ€ํ•œ fetch ์š”์ฒญ๊ณผ ์ผ์น˜

Read, Edit, WebFetch, MCP ๋ฐ Agent ๊ทœ์น™์— ๋Œ€ํ•œ ์™€์ผ๋“œ์นด๋“œ ๋™์ž‘, ๋„๊ตฌ ํŠน์ • ํŒจํ„ด ๋ฐ Bash ํŒจํ„ด์˜ ๋ณด์•ˆ ์ œํ•œ์„ ํฌํ•จํ•œ ์™„์ „ํ•œ ๊ทœ์น™ ๊ตฌ๋ฌธ ์ฐธ์กฐ๋Š” ๊ถŒํ•œ ๊ทœ์น™ ๊ตฌ๋ฌธ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Sandbox ์„ค์ •

๊ณ ๊ธ‰ ์ƒŒ๋“œ๋ฐ•์‹ฑ ๋™์ž‘์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ƒŒ๋“œ๋ฐ•์‹ฑ์€ bash ๋ช…๋ น์„ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฐ ๋„คํŠธ์›Œํฌ์—์„œ ๊ฒฉ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Sandboxing์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ‚ค ์„ค๋ช… ์˜ˆ์ œ
enabled bash ์ƒŒ๋“œ๋ฐ•์‹ฑ ํ™œ์„ฑํ™” (macOS, Linux ๋ฐ WSL2). ๊ธฐ๋ณธ๊ฐ’: false true
failIfUnavailable sandbox.enabled๊ฐ€ true์ด์ง€๋งŒ ์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ (์ข…์†์„ฑ ๋ˆ„๋ฝ, ์ง€์›๋˜์ง€ ์•Š๋Š” ํ”Œ๋žซํผ) ์‹œ์ž‘ ์‹œ ์˜ค๋ฅ˜๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. false (๊ธฐ๋ณธ๊ฐ’)์ผ ๋•Œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ๋ช…๋ น์ด ์ƒŒ๋“œ๋ฐ•์‹ฑ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. Managed ์„ค์ • ๋ฐฐํฌ์—์„œ ์ƒŒ๋“œ๋ฐ•์‹ฑ์„ ํ•˜๋“œ ๊ฒŒ์ดํŠธ๋กœ ์š”๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค true
autoAllowBashIfSandboxed ์ƒŒ๋“œ๋ฐ•์‹ฑ๋˜๋ฉด bash ๋ช…๋ น ์ž๋™ ์Šน์ธ. ๊ธฐ๋ณธ๊ฐ’: true true
excludedCommands ์ƒŒ๋“œ๋ฐ•์Šค ์™ธ๋ถ€์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ช…๋ น ["docker *"]
allowUnsandboxedCommands dangerouslyDisableSandbox ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒŒ๋“œ๋ฐ•์Šค ์™ธ๋ถ€์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. false๋กœ ์„ค์ •๋˜๋ฉด dangerouslyDisableSandbox ์ด์Šค์ผ€์ดํ”„ ํ•ด์น˜๊ฐ€ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”๋˜๊ณ  ๋ชจ๋“  ๋ช…๋ น์€ ์ƒŒ๋“œ๋ฐ•์‹ฑ๋˜๊ฑฐ๋‚˜ excludedCommands์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—„๊ฒฉํ•œ ์ƒŒ๋“œ๋ฐ•์‹ฑ์ด ํ•„์š”ํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ •์ฑ…์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: true false
filesystem.allowWrite ์ƒŒ๋“œ๋ฐ•์‹ฑ๋œ ๋ช…๋ น์ด ์“ธ ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ๋ชจ๋“  ์„ค์ • ๋ฒ”์œ„์—์„œ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค: ์‚ฌ์šฉ์ž, ํ”„๋กœ์ ํŠธ ๋ฐ managed ๊ฒฝ๋กœ๊ฐ€ ๊ฒฐํ•ฉ๋˜๊ณ  ๋Œ€์ฒด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Edit(...) ํ—ˆ์šฉ ๊ถŒํ•œ ๊ทœ์น™์˜ ๊ฒฝ๋กœ์™€๋„ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ ์ ‘๋‘์‚ฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ["/tmp/build", "~/.kube"]
filesystem.denyWrite ์ƒŒ๋“œ๋ฐ•์‹ฑ๋œ ๋ช…๋ น์ด ์“ธ ์ˆ˜ ์—†๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ๋ชจ๋“  ์„ค์ • ๋ฒ”์œ„์—์„œ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. Edit(...) ๊ฑฐ๋ถ€ ๊ถŒํ•œ ๊ทœ์น™์˜ ๊ฒฝ๋กœ์™€๋„ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ["/etc", "/usr/local/bin"]
filesystem.denyRead ์ƒŒ๋“œ๋ฐ•์‹ฑ๋œ ๋ช…๋ น์ด ์ฝ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ๋ชจ๋“  ์„ค์ • ๋ฒ”์œ„์—์„œ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. Read(...) ๊ฑฐ๋ถ€ ๊ถŒํ•œ ๊ทœ์น™์˜ ๊ฒฝ๋กœ์™€๋„ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ["~/.aws/credentials"]
filesystem.allowRead denyRead ์˜์—ญ ๋‚ด์—์„œ ์ฝ๊ธฐ๋ฅผ ๋‹ค์‹œ ํ—ˆ์šฉํ•  ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. denyRead๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ๋ชจ๋“  ์„ค์ • ๋ฒ”์œ„์—์„œ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—… ๊ณต๊ฐ„ ์ „์šฉ ์ฝ๊ธฐ ์•ก์„ธ์Šค ํŒจํ„ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ["."]
filesystem.allowManagedReadPathsOnly (Managed ์„ค์ •๋งŒ) Managed ์„ค์ •์˜ filesystem.allowRead ๊ฒฝ๋กœ๋งŒ ์กด์ค‘๋ฉ๋‹ˆ๋‹ค. denyRead๋Š” ์—ฌ์ „ํžˆ ๋ชจ๋“  ์†Œ์Šค์—์„œ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: false true
network.allowUnixSockets (macOS๋งŒ) Unix ์†Œ์ผ“ ๊ฒฝ๋กœ ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ. Linux ๋ฐ WSL2์—์„œ๋Š” ๋ฌด์‹œ๋˜๋ฉฐ, seccomp ํ•„ํ„ฐ๊ฐ€ ์†Œ์ผ“ ๊ฒฝ๋กœ๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  allowAllUnixSockets๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ["~/.ssh/agent-socket"]
network.allowAllUnixSockets ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ๋ชจ๋“  Unix ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. Linux ๋ฐ WSL2์—์„œ ์ด๋Š” socket(AF_UNIX, ...) ํ˜ธ์ถœ์„ ์ฐจ๋‹จํ•˜๋Š” seccomp ํ•„ํ„ฐ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋ฏ€๋กœ Unix ์†Œ์ผ“์„ ํ—ˆ์šฉํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: false true
network.allowLocalBinding localhost ํฌํŠธ์— ๋ฐ”์ธ๋”ฉ ํ—ˆ์šฉ (macOS๋งŒ). ๊ธฐ๋ณธ๊ฐ’: false true
network.allowMachLookup ์ƒŒ๋“œ๋ฐ•์Šค๊ฐ€ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ XPC/Mach ์„œ๋น„์Šค ์ด๋ฆ„ (macOS๋งŒ). ์ ‘๋‘์‚ฌ ์ผ์น˜๋ฅผ ์œ„ํ•ด ๋‹จ์ผ ํ›„ํ–‰ *๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. iOS Simulator ๋˜๋Š” Playwright์™€ ๊ฐ™์ด XPC๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•˜๋Š” ๋„๊ตฌ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ["com.apple.coresimulator.*"]
network.allowedDomains ์•„์›ƒ๋ฐ”์šด๋“œ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•  ๋„๋ฉ”์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: *.example.com). ["github.com", "*.npmjs.org"]
network.deniedDomains ์•„์›ƒ๋ฐ”์šด๋“œ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•  ๋„๋ฉ”์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. allowedDomains์™€ ๋™์ผํ•œ ์™€์ผ๋“œ์นด๋“œ ๊ตฌ๋ฌธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์ผ์น˜ํ•  ๋•Œ allowedDomains๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์„ค์ • ์†Œ์Šค์™€ ๊ด€๊ณ„์—†์ด ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค ["sensitive.cloud.example.com"]
network.allowManagedDomainsOnly (Managed ์„ค์ •๋งŒ) Managed ์„ค์ •์˜ allowedDomains ๋ฐ WebFetch(domain:...) ํ—ˆ์šฉ ๊ทœ์น™๋งŒ ์กด์ค‘๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž, ํ”„๋กœ์ ํŠธ ๋ฐ local ์„ค์ •์˜ ๋„๋ฉ”์ธ์€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ํ—ˆ์šฉ๋˜์ง€ ์•Š์€ ๋„๋ฉ”์ธ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ  ์ž๋™์œผ๋กœ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ๊ฑฐ๋ถ€๋œ ๋„๋ฉ”์ธ์€ ์—ฌ์ „ํžˆ ๋ชจ๋“  ์†Œ์Šค์—์„œ ์กด์ค‘๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: false true
network.httpProxyPort ์ž์‹ ์˜ ํ”„๋ก์‹œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ๋˜๋Š” HTTP ํ”„๋ก์‹œ ํฌํŠธ์ž…๋‹ˆ๋‹ค. ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด Claude๊ฐ€ ์ž์‹ ์˜ ํ”„๋ก์‹œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. 8080
network.socksProxyPort ์ž์‹ ์˜ ํ”„๋ก์‹œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ๋˜๋Š” SOCKS5 ํ”„๋ก์‹œ ํฌํŠธ์ž…๋‹ˆ๋‹ค. ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด Claude๊ฐ€ ์ž์‹ ์˜ ํ”„๋ก์‹œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. 8081
enableWeakerNestedSandbox ๊ถŒํ•œ์ด ์—†๋Š” Docker ํ™˜๊ฒฝ์—์„œ ๋” ์•ฝํ•œ ์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค (Linux ๋ฐ WSL2๋งŒ). ๋ณด์•ˆ์„ ๊ฐ์†Œ์‹œํ‚ต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: false true
enableWeakerNetworkIsolation (macOS๋งŒ) ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ์‹œ์Šคํ…œ TLS ์‹ ๋ขฐ ์„œ๋น„์Šค (com.apple.trustd.agent)์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. MITM ํ”„๋ก์‹œ ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ CA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” httpProxyPort๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ gh, gcloud ๋ฐ terraform๊ณผ ๊ฐ™์€ Go ๊ธฐ๋ฐ˜ ๋„๊ตฌ๊ฐ€ TLS ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ์„ ๊ฐ์†Œ์‹œํ‚ต๋‹ˆ๋‹ค ์ž ์žฌ์  ๋ฐ์ดํ„ฐ ์œ ์ถœ ๊ฒฝ๋กœ๋ฅผ ์—ด์–ด์„œ. ๊ธฐ๋ณธ๊ฐ’: false true
bwrapPath (Managed ์„ค์ •๋งŒ, Linux/WSL2) bubblewrap (bwrap) ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. PATH๋ฅผ ํ†ตํ•œ ์ž๋™ ๊ฐ์ง€๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. managed ์„ค์ •์—์„œ๋งŒ ์ ์šฉ๋˜๋ฉฐ ์‚ฌ์šฉ์ž ๋˜๋Š” ํ”„๋กœ์ ํŠธ ์„ค์ •์—์„œ๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. bwrap์ด managed ํ™˜๊ฒฝ์—์„œ ๋น„ํ‘œ์ค€ ์œ„์น˜์— ์„ค์น˜๋œ ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. /opt/admin/bwrap
socatPath (Managed ์„ค์ •๋งŒ, Linux/WSL2) ์ƒŒ๋“œ๋ฐ•์Šค ๋„คํŠธ์›Œํฌ ํ”„๋ก์‹œ์— ์‚ฌ์šฉ๋˜๋Š” socat ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. PATH๋ฅผ ํ†ตํ•œ ์ž๋™ ๊ฐ์ง€๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. Managed ์„ค์ •์—์„œ๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. /opt/admin/socat

Sandbox ๊ฒฝ๋กœ ์ ‘๋‘์‚ฌ

filesystem.allowWrite, filesystem.denyWrite, filesystem.denyRead ๋ฐ filesystem.allowRead์˜ ๊ฒฝ๋กœ๋Š” ๋‹ค์Œ ์ ‘๋‘์‚ฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:

์ ‘๋‘์‚ฌ ์˜๋ฏธ ์˜ˆ์ œ
/ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฃจํŠธ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ /tmp/build๋Š” /tmp/build๋กœ ์œ ์ง€๋จ
~/ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ๋Œ€์  ~/.kube๋Š” $HOME/.kube๊ฐ€ ๋จ
./ ๋˜๋Š” ์ ‘๋‘์‚ฌ ์—†์Œ ํ”„๋กœ์ ํŠธ ์„ค์ •์˜ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์ƒ๋Œ€์ ์ด๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ์„ค์ •์˜ ๊ฒฝ์šฐ ~/.claude์— ์ƒ๋Œ€์  ./output์€ .claude/settings.json์—์„œ <project-root>/output์œผ๋กœ ํ•ด๊ฒฐ๋จ

์ด์ „ //path ์ ‘๋‘์‚ฌ๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ์— ๋Œ€ํ•ด ์—ฌ์ „ํžˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์— ํ”„๋กœ์ ํŠธ ์ƒ๋Œ€ ํ•ด๊ฒฐ์„ ๊ธฐ๋Œ€ํ•˜๋ฉด์„œ ๋‹จ์ผ ์Šฌ๋ž˜์‹œ /path๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ./path๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ๋ฌธ์€ /path๋ฅผ ํ”„๋กœ์ ํŠธ ์ƒ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” Read ๋ฐ Edit ๊ถŒํ•œ ๊ทœ์น™๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Sandbox ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ๋Š” ํ‘œ์ค€ ๊ทœ์น™์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค: /tmp/build๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์˜ˆ์ œ:

{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["docker *"],
    "filesystem": {
      "allowWrite": ["/tmp/build", "~/.kube"],
      "denyRead": ["~/.aws/credentials"]
    },
    "network": {
      "allowedDomains": ["github.com", "*.npmjs.org", "registry.yarnpkg.com"],
      "deniedDomains": ["uploads.github.com"],
      "allowUnixSockets": [
        "/var/run/docker.sock"
      ],
      "allowLocalBinding": true
    }
  }
}

ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฐ ๋„คํŠธ์›Œํฌ ์ œํ•œ์€ ํ•จ๊ป˜ ๋ณ‘ํ•ฉ๋˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • sandbox.filesystem ์„ค์ • (์œ„์— ํ‘œ์‹œ๋จ): OS ์ˆ˜์ค€ ์ƒŒ๋“œ๋ฐ•์Šค ๊ฒฝ๊ณ„์—์„œ ๊ฒฝ๋กœ๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œํ•œ์€ Claude์˜ ํŒŒ์ผ ๋„๊ตฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค ๋ช…๋ น (์˜ˆ: kubectl, terraform, npm)์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๊ถŒํ•œ ๊ทœ์น™: Edit ํ—ˆ์šฉ/๊ฑฐ๋ถ€ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ Claude์˜ ํŒŒ์ผ ๋„๊ตฌ ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๊ณ , Read ๊ฑฐ๋ถ€ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ๊ธฐ๋ฅผ ์ฐจ๋‹จํ•˜๊ณ , WebFetch ํ—ˆ์šฉ/๊ฑฐ๋ถ€ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ๋„๋ฉ”์ธ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ทœ์น™์˜ ๊ฒฝ๋กœ๋„ ์ƒŒ๋“œ๋ฐ•์Šค ๊ตฌ์„ฑ์— ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.

Attribution ์„ค์ •

Claude Code๋Š” git ์ปค๋ฐ‹ ๋ฐ pull request์— attribution์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋ณ„๋„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

  • ์ปค๋ฐ‹์€ ๊ธฐ๋ณธ์ ์œผ๋กœ git trailers (์˜ˆ: Co-Authored-By)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • Pull request ์„ค๋ช…์€ ์ผ๋ฐ˜ ํ…์ŠคํŠธ์ž…๋‹ˆ๋‹ค
ํ‚ค ์„ค๋ช…
commit git ์ปค๋ฐ‹์— ๋Œ€ํ•œ attribution์œผ๋กœ ๋ชจ๋“  trailers๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋นˆ ๋ฌธ์ž์—ด์€ ์ปค๋ฐ‹ attribution์„ ์ˆจ๊น๋‹ˆ๋‹ค
pr Pull request ์„ค๋ช…์— ๋Œ€ํ•œ attribution์ž…๋‹ˆ๋‹ค. ๋นˆ ๋ฌธ์ž์—ด์€ pull request attribution์„ ์ˆจ๊น๋‹ˆ๋‹ค

๊ธฐ๋ณธ ์ปค๋ฐ‹ attribution:

๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code)

   Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

๊ธฐ๋ณธ pull request attribution:

๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code)

์˜ˆ์ œ:

{
  "attribution": {
    "commit": "Generated with AI\n\nCo-Authored-By: AI <ai@example.com>",
    "pr": ""
  }
}

ํŒŒ์ผ ์ œ์•ˆ ์„ค์ •

@ ํŒŒ์ผ ๊ฒฝ๋กœ ์ž๋™ ์™„์„ฑ์„ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ช…๋ น์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ œ๊ณต ํŒŒ์ผ ์ œ์•ˆ์€ ๋น ๋ฅธ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ˆœํšŒ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋Œ€๊ทœ๋ชจ monorepos๋Š” ์‚ฌ์ „ ๊ตฌ์ถ•๋œ ํŒŒ์ผ ์ธ๋ฑ์Šค ๋˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋„๊ตฌ์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ ํŠน์ • ์ธ๋ฑ์‹ฑ์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
  "fileSuggestion": {
    "type": "command",
    "command": "~/.claude/file-suggestion.sh"
  }
}

๋ช…๋ น์€ CLAUDE_PROJECT_DIR์„ ํฌํ•จํ•œ hooks์™€ ๋™์ผํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. stdin์„ ํ†ตํ•ด query ํ•„๋“œ๊ฐ€ ์žˆ๋Š” JSON์„ ๋ฐ›์Šต๋‹ˆ๋‹ค:

{"query": "src/comp"}

stdout์— ์ค„ ๋ฐ”๊ฟˆ์œผ๋กœ ๊ตฌ๋ถ„๋œ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค (ํ˜„์žฌ 15๊ฐœ๋กœ ์ œํ•œ๋จ):

src/components/Button.tsx
src/components/Modal.tsx
src/components/Form.tsx

์˜ˆ์ œ:

#!/bin/bash
query=$(cat | jq -r '.query')
your-repo-file-index --query "$query" | head -20

Hook ๊ตฌ์„ฑ

์ด๋Ÿฌํ•œ ์„ค์ •์€ ์–ด๋–ค hooks๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š”์ง€์™€ HTTP hooks๊ฐ€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. allowManagedHooksOnly ์„ค์ •์€ managed ์„ค์ •์—์„œ๋งŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. URL ๋ฐ env var ํ—ˆ์šฉ ๋ชฉ๋ก์€ ๋ชจ๋“  ์„ค์ • ์ˆ˜์ค€์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์†Œ์Šค ์ „์ฒด์—์„œ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.

allowManagedHooksOnly๊ฐ€ true์ผ ๋•Œ์˜ ๋™์ž‘:

  • Managed hooks ๋ฐ SDK hooks๊ฐ€ ๋กœ๋“œ๋จ
  • Managed ์„ค์ • enabledPlugins์—์„œ ๊ฐ•์ œ ํ™œ์„ฑํ™”๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ hooks๊ฐ€ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ์ž๋Š” ์กฐ์ง ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ํ†ตํ•ด ๊ฒ€์ฆ๋œ hooks๋ฅผ ๋ฐฐํฌํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ ๋ขฐ๋Š” ์ „์ฒด plugin@marketplace ID๋กœ ๋ถ€์—ฌ๋˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์˜ ๋™์ผํ•œ ์ด๋ฆ„์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ฐจ๋‹จ๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค
  • ์‚ฌ์šฉ์ž hooks, ํ”„๋กœ์ ํŠธ hooks ๋ฐ ๋‹ค๋ฅธ ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ hooks๋Š” ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค

HTTP hook URL ์ œํ•œ:

HTTP hooks๊ฐ€ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” URL์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜๋ฅผ ์œ„ํ•ด *๋ฅผ ์™€์ผ๋“œ์นด๋“œ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์ด ์ •์˜๋˜๋ฉด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” URL์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” HTTP hooks๋Š” ์ž๋™์œผ๋กœ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๋ช… ์ผ์น˜๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ›„ํ–‰ FQDN ์ ์„ ๋ฌด์‹œํ•˜์—ฌ DNS ์˜๋ฏธ๋ก ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

{
  "allowedHttpHookUrls": ["https://hooks.example.com/*", "http://localhost:*"]
}

HTTP hook ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ œํ•œ:

HTTP hooks๊ฐ€ ํ—ค๋” ๊ฐ’์— ๋ณด๊ฐ„ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ๊ฐ hook์˜ ์œ ํšจํ•œ allowedEnvVars๋Š” ์ด ์„ค์ •๊ณผ์˜ ๊ต์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

{
  "httpHookAllowedEnvVars": ["MY_TOKEN", "HOOK_SECRET"]
}

์ •์ฑ… ๋„์šฐ๋ฏธ๋กœ managed ์„ค์ • ๊ณ„์‚ฐ

policyHelper ์„ค์ •์€ ์‹œ์ž‘ ์‹œ managed ์„ค์ •์„ ๋™์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ์‹คํ–‰ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๋ฏ€๋กœ ๊ด€๋ฆฌ์ž๋Š” ์žฅ์น˜ ์ƒํƒœ, ID ๋˜๋Š” ์›๊ฒฉ ์„œ๋น„์Šค์—์„œ ์ •์ฑ…์„ ํŒŒ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MDM ๋˜๋Š” ์‹œ์Šคํ…œ managed-settings.json ํŒŒ์ผ์—์„œ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. Claude Code๋Š” ์‚ฌ์šฉ์ž ์„ค์ •, ํ”„๋กœ์ ํŠธ ์„ค์ •, HKCU ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ•˜์ด๋ธŒ ๋ฐ ์„œ๋ฒ„ ๊ด€๋ฆฌ ์„ค์ •์„ ํฌํ•จํ•œ ๋‹ค๋ฅธ ๋ฒ”์œ„์— ๋‚˜ํƒ€๋‚˜๋Š” policyHelper๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •์€ ๋‹ค์Œ ํ‚ค๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค:

ํ‚ค ์œ ํ˜• ์„ค๋ช…
path string ๋„์šฐ๋ฏธ ์‹คํ–‰ ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ
timeoutMs number ๋„์šฐ๋ฏธ๊ฐ€ ์‹คํŒจํ•œ ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— ๋Œ€๊ธฐํ•  ์‹œ๊ฐ„
refreshIntervalMs number ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋„์šฐ๋ฏธ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•  ๋นˆ๋„. ์ƒˆ๋กœ๊ณ ์นจ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด 0์œผ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œ 60000์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค

๋„์šฐ๋ฏธ๋Š” stdout์— JSON ๋ด‰ํˆฌ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์„ ์ตœ์ƒ์œ„ ์ˆ˜์ค€์ด ์•„๋‹Œ managedSettings ํ‚ค ์•„๋ž˜์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ฒ ์–ด ์„ค์ • ๊ฐ์ฒด๋Š” managedSettings undefined๋กœ ํŒŒ์‹ฑ๋˜๊ณ  ์•„๋ฌด๊ฒƒ๋„ ์ ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค:

{
  "managedSettings": {
    "permissions": { "deny": ["Read(//etc/secrets/**)"] }
  },
  "claudeMd": "# Organization context\n...",
  "appendSystemPrompt": "Always cite the internal style guide."
}

๋„์šฐ๋ฏธ๊ฐ€ managedSettings๋ฅผ ๋‚ด๋ณด๋‚ผ ๋•Œ ํ•ด๋‹น ๊ฐ์ฒด๋Š” ์‹คํ–‰์„ ์œ„ํ•ด ํŒŒ์ผ ๊ธฐ๋ฐ˜ managed ์„ค์ •์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ๋„์šฐ๋ฏธ๊ฐ€ ์‹œ์ž‘ ์‹œ 0์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ์ข…๋ฃŒ๋˜๋ฉด Claude Code๋Š” ์˜ค๋ฅ˜๋ฅผ ์ธ์‡„ํ•˜๊ณ  ์‹œ์ž‘์„ ๊ฑฐ๋ถ€ํ•˜๋ฏ€๋กœ ์ค‘๋‹จ ๋ณต์›๋ ฅ์ด ํ•„์š”ํ•œ ๋„์šฐ๋ฏธ๋Š” ์ž์‹ ์˜ ์บ์‹œ์—์„œ ์ œ๊ณตํ•˜๊ณ  0์œผ๋กœ ์ข…๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ์šฐ์„ ์ˆœ์œ„

์„ค์ •์€ ์šฐ์„ ์ˆœ์œ„ ์ˆœ์„œ๋Œ€๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋†’์Œ์—์„œ ๊ฐ€์žฅ ๋‚ฎ์Œ:

  1. Managed ์„ค์ • (์„œ๋ฒ„ ๊ด€๋ฆฌ, MDM/OS ์ˆ˜์ค€ ์ •์ฑ… ๋˜๋Š” managed ์„ค์ •)

    • IT์—์„œ ์„œ๋ฒ„ ์ „๋‹ฌ, MDM ๊ตฌ์„ฑ ํ”„๋กœํ•„, ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ •์ฑ… ๋˜๋Š” managed ์„ค์ • ํŒŒ์ผ์„ ํ†ตํ•ด ๋ฐฐํฌํ•œ ์ •์ฑ…
    • ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ํฌํ•จํ•œ ๋‹ค๋ฅธ ์ˆ˜์ค€์œผ๋กœ ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†์Œ
    • Managed ๊ณ„์ธต ๋‚ด์—์„œ ์šฐ์„ ์ˆœ์œ„๋Š”: ์„œ๋ฒ„ ๊ด€๋ฆฌ > MDM/OS ์ˆ˜์ค€ ์ •์ฑ… > ํŒŒ์ผ ๊ธฐ๋ฐ˜ (managed-settings.d/*.json + managed-settings.json) > HKCU ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ (Windows๋งŒ). ํ•˜๋‚˜์˜ managed ์†Œ์Šค๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ ์†Œ์Šค๋Š” ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๊ณ„์ธต ๋‚ด์—์„œ ๋“œ๋กญ์ธ ํŒŒ์ผ๊ณผ ๊ธฐ๋ณธ ํŒŒ์ผ์ด ํ•จ๊ป˜ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.
  2. ๋ช…๋ น์ค„ ์ธ์ˆ˜

    • ํŠน์ • ์„ธ์…˜์— ๋Œ€ํ•œ ์ž„์‹œ ์žฌ์ •์˜. --settings <file-or-json>์„ ํ†ตํ•ด ์ „๋‹ฌ๋œ JSON์€ ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์„ค์ •๊ณผ ๋™์ผํ•œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค: ์—ฌ๊ธฐ์— ์„ค์ •๋œ ํ‚ค๋Š” local, project ๋˜๋Š” user ์„ค์ •์˜ ๋™์ผํ•œ ํ‚ค๋ฅผ ์žฌ์ •์˜ํ•˜๊ณ , ํ‚ค๋ฅผ ์ƒ๋žตํ•˜๋ฉด ๋‚ฎ์€ ๊ณ„์ธต ๊ฐ’์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค
  3. Local ํ”„๋กœ์ ํŠธ ์„ค์ • (.claude/settings.local.json)

    • ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ ํŠน์ • ์„ค์ •
  4. ๊ณต์œ  ํ”„๋กœ์ ํŠธ ์„ค์ • (.claude/settings.json)

    • ์†Œ์Šค ์ œ์–ด์˜ ํŒ€ ๊ณต์œ  ํ”„๋กœ์ ํŠธ ์„ค์ •
  5. ์‚ฌ์šฉ์ž ์„ค์ • (~/.claude/settings.json)

    • ๊ฐœ์ธ ์ „์—ญ ์„ค์ •

์ด ๊ณ„์ธต ๊ตฌ์กฐ๋Š” ์กฐ์ง ์ •์ฑ…์ด ํ•ญ์ƒ ์ ์šฉ๋˜๋ฉด์„œ๋„ ํŒ€๊ณผ ๊ฐœ์ธ์ด ์ž์‹ ์˜ ๊ฒฝํ—˜์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. CLI, VS Code ํ™•์žฅ ๋˜๋Š” JetBrains IDE์—์„œ Claude Code๋ฅผ ์‹คํ–‰ํ•˜๋“  ๋™์ผํ•œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž ์„ค์ •์ด permissions.defaultMode๋ฅผ acceptEdits๋กœ ์„ค์ •ํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ์˜ ๊ณต์œ  ์„ค์ •์ด ์ด๋ฅผ default๋กœ ์„ค์ •ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๊ฐ’์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์ œ๋Š” ๋ฐฐ์—ด ๊ฐ’ ์„ค์ • (์˜ˆ: ๊ถŒํ•œ ๊ทœ์น™)์ด ๋Œ€์‹  ์–ด๋–ป๊ฒŒ ๊ฒฐํ•ฉ๋˜๋Š”์ง€๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

ํ™œ์„ฑ ์„ค์ • ํ™•์ธ

Claude Code ๋‚ด์—์„œ /status๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์–ด๋–ค ์„ค์ • ์†Œ์Šค๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ณ  ์–ด๋””์—์„œ ์˜ค๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ์€ ๊ฐ ๊ตฌ์„ฑ ๊ณ„์ธต (managed, user, project)์„ Enterprise managed settings (remote), Enterprise managed settings (plist), Enterprise managed settings (HKLM), Enterprise managed settings (HKCU) ๋˜๋Š” Enterprise managed settings (file)๊ณผ ๊ฐ™์€ ์ถœ์ฒ˜์™€ ํ•จ๊ป˜ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์„ค์ • ํŒŒ์ผ์— ์˜ค๋ฅ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด /status๋Š” ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ํฌ์ธํŠธ

  • ๋ฉ”๋ชจ๋ฆฌ ํŒŒ์ผ (CLAUDE.md): Claude๊ฐ€ ์‹œ์ž‘ ์‹œ ๋กœ๋“œํ•˜๋Š” ์ง€์นจ ๋ฐ ์ปจํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค
  • ์„ค์ • ํŒŒ์ผ (JSON): ๊ถŒํ•œ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฐ ๋„๊ตฌ ๋™์ž‘์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค
  • Skills: /skill-name์œผ๋กœ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ Claude๊ฐ€ ์ž๋™์œผ๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํ”„๋กฌํ”„ํŠธ
  • MCP servers: ์ถ”๊ฐ€ ๋„๊ตฌ ๋ฐ ํ†ตํ•ฉ์œผ๋กœ Claude Code๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค
  • ์šฐ์„ ์ˆœ์œ„: ๋†’์€ ์ˆ˜์ค€ ๊ตฌ์„ฑ (Managed)์ด ๋‚ฎ์€ ์ˆ˜์ค€ (User/Project)์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค
  • ์ƒ์†: ์„ค์ •์€ ๋ณ‘ํ•ฉ๋˜๋ฉฐ ๋” ๊ตฌ์ฒด์ ์ธ ์„ค์ •์ด ๋” ๊ด‘๋ฒ”์œ„ํ•œ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค

์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ

Claude Code์˜ ๋‚ด๋ถ€ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋Š” ๊ฒŒ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ์ง€์นจ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด CLAUDE.md ํŒŒ์ผ ๋˜๋Š” --append-system-prompt ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฏผ๊ฐํ•œ ํŒŒ์ผ ์ œ์™ธ

API ํ‚ค, ๋น„๋ฐ€ ๋ฐ ํ™˜๊ฒฝ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์—์„œ Claude Code๊ฐ€ ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด .claude/settings.json ํŒŒ์ผ์—์„œ permissions.deny ์„ค์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Read(./config/credentials.json)",
      "Read(./build)"
    ]
  }
}

์ด๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ignorePatterns ๊ตฌ์„ฑ์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ์€ ํŒŒ์ผ ๊ฒ€์ƒ‰ ๋ฐ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์—์„œ ์ œ์™ธ๋˜๋ฉฐ ์ด๋Ÿฌํ•œ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ์ž‘์—…์ด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

Subagent ๊ตฌ์„ฑ

Claude Code๋Š” ์‚ฌ์šฉ์ž ๋ฐ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€ ๋ชจ๋‘์—์„œ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ AI subagents๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ subagents๋Š” YAML frontmatter๊ฐ€ ์žˆ๋Š” Markdown ํŒŒ์ผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค:

  • ์‚ฌ์šฉ์ž subagents: ~/.claude/agents/ - ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ํ”„๋กœ์ ํŠธ subagents: .claude/agents/ - ํ”„๋กœ์ ํŠธ์— ํŠน์ •์ด๋ฉฐ ํŒ€๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Œ

Subagent ํŒŒ์ผ์€ ์‚ฌ์šฉ์ž ์ •์˜ ํ”„๋กฌํ”„ํŠธ ๋ฐ ๋„๊ตฌ ๊ถŒํ•œ์ด ์žˆ๋Š” ํŠนํ™”๋œ AI ์–ด์‹œ์Šคํ„ดํŠธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. subagents ๋ฌธ์„œ์—์„œ subagents ์ƒ์„ฑ ๋ฐ ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ

Claude Code๋Š” skills, agents, hooks ๋ฐ MCP servers๋กœ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ๋˜๋ฉฐ ์‚ฌ์šฉ์ž ๋ฐ ์ €์žฅ์†Œ ์ˆ˜์ค€ ๋ชจ๋‘์—์„œ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •

settings.json์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ จ ์„ค์ •:

{
  "enabledPlugins": {
    "formatter@acme-tools": true,
    "deployer@acme-tools": true,
    "analyzer@security-plugins": false
  },
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": {
        "source": "github",
        "repo": "acme-corp/claude-plugins"
      }
    }
  }
}

enabledPlugins

์–ด๋–ค ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ™œ์„ฑํ™”๋˜๋Š”์ง€ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ํ˜•์‹: "plugin-name@marketplace-name": true/false

๋ฒ”์œ„:

  • ์‚ฌ์šฉ์ž ์„ค์ • (~/.claude/settings.json): ๊ฐœ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •
  • ํ”„๋กœ์ ํŠธ ์„ค์ • (.claude/settings.json): ํŒ€๊ณผ ๊ณต์œ ๋˜๋Š” ํ”„๋กœ์ ํŠธ ํŠน์ • ํ”Œ๋Ÿฌ๊ทธ์ธ
  • Local ์„ค์ • (.claude/settings.local.json): ๋จธ์‹ ๋ณ„ ์žฌ์ •์˜ (์ปค๋ฐ‹๋˜์ง€ ์•Š์Œ)
  • Managed ์„ค์ • (managed-settings.json): ๋ชจ๋“  ๋ฒ”์œ„์—์„œ ์„ค์น˜๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ˆจ๊ธฐ๋Š” ์กฐ์ง ์ „์ฒด ์ •์ฑ… ์žฌ์ •์˜

์˜ˆ์ œ:

{
  "enabledPlugins": {
    "code-formatter@team-tools": true,
    "deployment-tools@team-tools": true,
    "experimental-features@personal": false
  }
}

extraKnownMarketplaces

์ €์žฅ์†Œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์•ผ ํ•  ์ถ”๊ฐ€ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํŒ€ ๋ฉค๋ฒ„๊ฐ€ ํ•„์š”ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ์ €์žฅ์†Œ ์ˆ˜์ค€ ์„ค์ •์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ €์žฅ์†Œ์— extraKnownMarketplaces๊ฐ€ ํฌํ•จ๋˜๋ฉด:

  1. ํŒ€ ๋ฉค๋ฒ„๋Š” ํด๋”๋ฅผ ์‹ ๋ขฐํ•  ๋•Œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ์„ค์น˜ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค
  2. ๊ทธ ๋‹ค์Œ ํŒ€ ๋ฉค๋ฒ„๋Š” ํ•ด๋‹น ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค
  3. ์‚ฌ์šฉ์ž๋Š” ์›ํ•˜์ง€ ์•Š๋Š” ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ๋˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์‚ฌ์šฉ์ž ์„ค์ •์— ์ €์žฅ๋จ)
  4. ์„ค์น˜๋Š” ์‹ ๋ขฐ ๊ฒฝ๊ณ„๋ฅผ ์กด์ค‘ํ•˜๊ณ  ๋ช…์‹œ์  ๋™์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค

์˜ˆ์ œ:

{
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": {
        "source": "github",
        "repo": "acme-corp/claude-plugins"
      }
    },
    "security-plugins": {
      "source": {
        "source": "git",
        "url": "https://git.example.com/security/plugins.git"
      }
    }
  }
}

๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์†Œ์Šค ์œ ํ˜•:

  • github: GitHub ์ €์žฅ์†Œ (repo ์‚ฌ์šฉ)
  • git: ๋ชจ๋“  git URL (url ์‚ฌ์šฉ)
  • directory: ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ (path ์‚ฌ์šฉ, ๊ฐœ๋ฐœ ์ „์šฉ)
  • hostPattern: ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ํ˜ธ์ŠคํŠธ์™€ ์ผ์น˜ํ•˜๋Š” ์ •๊ทœ์‹ ํŒจํ„ด (hostPattern ์‚ฌ์šฉ)
  • settings: ๋ณ„๋„์˜ ํ˜ธ์ŠคํŒ… ์ €์žฅ์†Œ ์—†์ด settings.json์— ์ง์ ‘ ์„ ์–ธ๋œ ์ธ๋ผ์ธ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค (name ๋ฐ plugins ์‚ฌ์šฉ)

๊ฐ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ํ•ญ๋ชฉ์€ ์„ ํƒ์  autoUpdate Boolean๋„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. source์™€ ํ•จ๊ป˜ "autoUpdate": true๋ฅผ ์„ค์ •ํ•˜์—ฌ Claude Code๊ฐ€ ํ•ด๋‹น ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๊ณ  ์‹œ์ž‘ ์‹œ ์„ค์น˜๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด ๊ณต์‹ Anthropic ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋Š” ๊ธฐ๋ณธ๊ฐ’์ด true์ด๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“  ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋Š” ๊ธฐ๋ณธ๊ฐ’์ด false์ž…๋‹ˆ๋‹ค. ์ž๋™ ์—…๋ฐ์ดํŠธ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

source: 'settings'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŒ…๋œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ €์žฅ์†Œ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  ์ž‘์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ธํŠธ๋ฅผ ์ธ๋ผ์ธ์œผ๋กœ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋‚˜์—ด๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ GitHub ๋˜๋Š” npm๊ณผ ๊ฐ™์€ ์™ธ๋ถ€ ์†Œ์Šค๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ enabledPlugins์—์„œ ๊ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ณ„๋„๋กœ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

{
  "extraKnownMarketplaces": {
    "team-tools": {
      "source": {
        "source": "settings",
        "name": "team-tools",
        "plugins": [
          {
            "name": "code-formatter",
            "source": {
              "source": "github",
              "repo": "acme-corp/code-formatter"
            }
          }
        ]
      }
    }
  }
}

strictKnownMarketplaces

Managed ์„ค์ •๋งŒ: ์‚ฌ์šฉ์ž๊ฐ€ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์€ managed ์„ค์ •์—์„œ๋งŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์†Œ์Šค์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Managed ์„ค์ • ํŒŒ์ผ ์œ„์น˜:

  • macOS: /Library/Application Support/ClaudeCode/managed-settings.json
  • Linux ๋ฐ WSL: /etc/claude-code/managed-settings.json
  • Windows: C:\Program Files\ClaudeCode\managed-settings.json

์ฃผ์š” ํŠน์„ฑ:

  • Managed ์„ค์ • (managed-settings.json)์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์‚ฌ์šฉ์ž ๋˜๋Š” ํ”„๋กœ์ ํŠธ ์„ค์ •์œผ๋กœ ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†์Œ (์ตœ๊ณ  ์šฐ์„ ์ˆœ์œ„)
  • ๋„คํŠธ์›Œํฌ/ํŒŒ์ผ ์‹œ์Šคํ…œ ์ž‘์—… ์ „์— ์ ์šฉ๋จ (์ฐจ๋‹จ๋œ ์†Œ์Šค๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Œ)
  • hostPattern ๋ฐ pathPattern์„ ์ œ์™ธํ•œ ์†Œ์Šค ์‚ฌ์–‘์— ๋Œ€ํ•ด ์ •ํ™•ํ•œ ์ผ์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. hostPattern ๋ฐ pathPattern์€ ์ •๊ทœ์‹ ์ผ์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

ํ—ˆ์šฉ ๋ชฉ๋ก ๋™์ž‘:

  • undefined (๊ธฐ๋ณธ๊ฐ’): ์ œํ•œ ์—†์Œ - ์‚ฌ์šฉ์ž๋Š” ๋ชจ๋“  ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋นˆ ๋ฐฐ์—ด []: ์™„์ „ ์ž ๊ธˆ - ์‚ฌ์šฉ์ž๋Š” ์ƒˆ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Œ
  • ์†Œ์Šค ๋ชฉ๋ก: ์‚ฌ์šฉ์ž๋Š” ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š” ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋งŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ

์ง€์›๋˜๋Š” ๋ชจ๋“  ์†Œ์Šค ์œ ํ˜•:

ํ—ˆ์šฉ ๋ชฉ๋ก์€ ์—ฌ๋Ÿฌ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์†Œ์Šค ์œ ํ˜•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์†Œ์Šค๋Š” ์ •ํ™•ํ•œ ์ผ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด hostPattern ๋ฐ pathPattern์€ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ํ˜ธ์ŠคํŠธ ๋ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์ •๊ทœ์‹ ์ผ์น˜๋ฅผ ๊ฐ๊ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. GitHub ์ €์žฅ์†Œ:
{ "source": "github", "repo": "acme-corp/approved-plugins" }
{ "source": "github", "repo": "acme-corp/security-tools", "ref": "v2.0" }
{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }

ํ•„๋“œ: repo (ํ•„์ˆ˜), ref (์„ ํƒ: ๋ถ„๊ธฐ/ํƒœ๊ทธ/SHA), path (์„ ํƒ: ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ)

  1. Git ์ €์žฅ์†Œ:
{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git" }
{ "source": "git", "url": "https://bitbucket.org/acme-corp/plugins.git", "ref": "production" }
{ "source": "git", "url": "ssh://git@git.example.com/plugins.git", "ref": "v3.1", "path": "approved" }

ํ•„๋“œ: url (ํ•„์ˆ˜), ref (์„ ํƒ: ๋ถ„๊ธฐ/ํƒœ๊ทธ/SHA), path (์„ ํƒ: ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ)

  1. URL ๊ธฐ๋ฐ˜ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค:
{ "source": "url", "url": "https://plugins.example.com/marketplace.json" }
{ "source": "url", "url": "https://cdn.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }

ํ•„๋“œ: url (ํ•„์ˆ˜), headers (์„ ํƒ: ์ธ์ฆ๋œ ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•œ HTTP ํ—ค๋”)

  1. NPM ํŒจํ‚ค์ง€:
{ "source": "npm", "package": "@acme-corp/claude-plugins" }
{ "source": "npm", "package": "@acme-corp/approved-marketplace" }

ํ•„๋“œ: package (ํ•„์ˆ˜, ๋ฒ”์œ„๊ฐ€ ์ง€์ •๋œ ํŒจํ‚ค์ง€ ์ง€์›)

  1. ํŒŒ์ผ ๊ฒฝ๋กœ:
{ "source": "file", "path": "/usr/local/share/claude/acme-marketplace.json" }
{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }

ํ•„๋“œ: path (ํ•„์ˆ˜: marketplace.json ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ)

  1. ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ:
{ "source": "directory", "path": "/usr/local/share/claude/acme-plugins" }
{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }

ํ•„๋“œ: path (ํ•„์ˆ˜: .claude-plugin/marketplace.json์„ ํฌํ•จํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ)

  1. ํ˜ธ์ŠคํŠธ ํŒจํ„ด ์ผ์น˜:
{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }
{ "source": "hostPattern", "hostPattern": "^gitlab\\.internal\\.example\\.com$" }

ํ•„๋“œ: hostPattern (ํ•„์ˆ˜: ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ํ˜ธ์ŠคํŠธ์™€ ์ผ์น˜ํ•˜๋Š” ์ •๊ทœ์‹ ํŒจํ„ด)

๊ฐ ์ €์žฅ์†Œ๋ฅผ ์—ด๊ฑฐํ•˜์ง€ ์•Š๊ณ  ํŠน์ • ํ˜ธ์ŠคํŠธ์˜ ๋ชจ๋“  ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ํ˜ธ์ŠคํŠธ ํŒจํ„ด ์ผ์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์˜ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋‚ด๋ถ€ GitHub Enterprise ๋˜๋Š” GitLab ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์กฐ์ง์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์†Œ์Šค ์œ ํ˜•๋ณ„ ํ˜ธ์ŠคํŠธ ์ถ”์ถœ:

  • github: ํ•ญ์ƒ github.com์— ๋Œ€ํ•ด ์ผ์น˜
  • git: URL์—์„œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์ถ”์ถœ (HTTPS ๋ฐ SSH ํ˜•์‹ ์ง€์›)
  • url: URL์—์„œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์ถ”์ถœ
  • npm, file, directory: ํ˜ธ์ŠคํŠธ ํŒจํ„ด ์ผ์น˜์— ์ง€์›๋˜์ง€ ์•Š์Œ
  1. ๊ฒฝ๋กœ ํŒจํ„ด ์ผ์น˜:
{ "source": "pathPattern", "pathPattern": "^/opt/approved/" }
{ "source": "pathPattern", "pathPattern": ".*" }

ํ•„๋“œ: pathPattern (ํ•„์ˆ˜: file ๋ฐ directory ์†Œ์Šค์˜ path ํ•„๋“œ์™€ ์ผ์น˜ํ•˜๋Š” ์ •๊ทœ์‹ ํŒจํ„ด)

๋„คํŠธ์›Œํฌ ์†Œ์Šค์— ๋Œ€ํ•œ hostPattern ์ œํ•œ๊ณผ ํ•จ๊ป˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ธฐ๋ฐ˜ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ๊ฒฝ๋กœ ํŒจํ„ด ์ผ์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋กœ์ปฌ ๊ฒฝ๋กœ๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ".*"๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ œํ•œํ•˜๋ ค๋ฉด ๋” ์ข์€ ํŒจํ„ด์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์˜ˆ์ œ:

์˜ˆ์ œ: ํŠน์ • ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋งŒ ํ—ˆ์šฉ:

{
  "strictKnownMarketplaces": [
    {
      "source": "github",
      "repo": "acme-corp/approved-plugins"
    },
    {
      "source": "github",
      "repo": "acme-corp/security-tools",
      "ref": "v2.0"
    },
    {
      "source": "url",
      "url": "https://plugins.example.com/marketplace.json"
    },
    {
      "source": "npm",
      "package": "@acme-corp/compliance-plugins"
    }
  ]
}

์˜ˆ์ œ - ๋ชจ๋“  ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ถ”๊ฐ€ ๋น„ํ™œ์„ฑํ™”:

{
  "strictKnownMarketplaces": []
}

์˜ˆ์ œ: ๋‚ด๋ถ€ git ์„œ๋ฒ„์˜ ๋ชจ๋“  ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ํ—ˆ์šฉ:

{
  "strictKnownMarketplaces": [
    {
      "source": "hostPattern",
      "hostPattern": "^github\\.example\\.com$"
    }
  ]
}

์ •ํ™•ํ•œ ์ผ์น˜ ์š”๊ตฌ ์‚ฌํ•ญ:

๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์†Œ์Šค๋Š” ์‚ฌ์šฉ์ž์˜ ์ถ”๊ฐ€๊ฐ€ ํ—ˆ์šฉ๋˜๋ ค๋ฉด ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. git ๊ธฐ๋ฐ˜ ์†Œ์Šค (github ๋ฐ git)์˜ ๊ฒฝ์šฐ ์ด๋Š” ๋ชจ๋“  ์„ ํƒ์  ํ•„๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

  • repo ๋˜๋Š” url์ด ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•จ
  • ref ํ•„๋“œ๊ฐ€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•จ (๋˜๋Š” ๋‘˜ ๋‹ค ์ •์˜๋˜์ง€ ์•Š์Œ)
  • path ํ•„๋“œ๊ฐ€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•จ (๋˜๋Š” ๋‘˜ ๋‹ค ์ •์˜๋˜์ง€ ์•Š์Œ)

์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์†Œ์Šค์˜ ์˜ˆ:

// ์ด๋“ค์€ ๋‹ค๋ฅธ ์†Œ์Šค์ž…๋‹ˆ๋‹ค:
{ "source": "github", "repo": "acme-corp/plugins" }
{ "source": "github", "repo": "acme-corp/plugins", "ref": "main" }

// ์ด๊ฒƒ๋„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค:
{ "source": "github", "repo": "acme-corp/plugins", "path": "marketplace" }
{ "source": "github", "repo": "acme-corp/plugins" }

extraKnownMarketplaces์™€์˜ ๋น„๊ต:

์ธก๋ฉด strictKnownMarketplaces extraKnownMarketplaces
๋ชฉ์  ์กฐ์ง ์ •์ฑ… ์ ์šฉ ํŒ€ ํŽธ์˜
์„ค์ • ํŒŒ์ผ managed-settings.json๋งŒ ๋ชจ๋“  ์„ค์ • ํŒŒ์ผ
๋™์ž‘ ํ—ˆ์šฉ ๋ชฉ๋ก์— ์—†๋Š” ์ถ”๊ฐ€ ์ฐจ๋‹จ ๋ˆ„๋ฝ๋œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ž๋™ ์„ค์น˜
์ ์šฉ ์‹œ๊ธฐ ๋„คํŠธ์›Œํฌ/ํŒŒ์ผ ์‹œ์Šคํ…œ ์ž‘์—… ์ „ ์‚ฌ์šฉ์ž ์‹ ๋ขฐ ํ”„๋กฌํ”„ํŠธ ํ›„
์žฌ์ •์˜ ๊ฐ€๋Šฅ ์•„๋‹ˆ์˜ค (์ตœ๊ณ  ์šฐ์„ ์ˆœ์œ„) ์˜ˆ (๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์„ค์ •์œผ๋กœ)
์†Œ์Šค ํ˜•์‹ ์ง์ ‘ ์†Œ์Šค ๊ฐ์ฒด ์ค‘์ฒฉ๋œ ์†Œ์Šค๊ฐ€ ์žˆ๋Š” ๋ช…๋ช…๋œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค
์‚ฌ์šฉ ์‚ฌ๋ก€ ๊ทœ์ • ์ค€์ˆ˜, ๋ณด์•ˆ ์ œํ•œ ์˜จ๋ณด๋”ฉ, ํ‘œ์ค€ํ™”

ํ˜•์‹ ์ฐจ์ด:

strictKnownMarketplaces๋Š” ์ง์ ‘ ์†Œ์Šค ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

{
  "strictKnownMarketplaces": [
    { "source": "github", "repo": "acme-corp/plugins" }
  ]
}

extraKnownMarketplaces๋Š” ๋ช…๋ช…๋œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:

{
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": { "source": "github", "repo": "acme-corp/plugins" }
    }
  }
}

ํ•จ๊ป˜ ์‚ฌ์šฉ:

strictKnownMarketplaces๋Š” ์ •์ฑ… ๊ฒŒ์ดํŠธ์ž…๋‹ˆ๋‹ค: ์‚ฌ์šฉ์ž๊ฐ€ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ œ์–ดํ•˜์ง€๋งŒ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ๋“ฑ๋กํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ์ œํ•œํ•˜๊ณ  ์‚ฌ์ „ ๋“ฑ๋กํ•˜๋ ค๋ฉด managed-settings.json์—์„œ ๋‘˜ ๋‹ค ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:

{
  "strictKnownMarketplaces": [
    { "source": "github", "repo": "acme-corp/plugins" }
  ],
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": { "source": "github", "repo": "acme-corp/plugins" }
    }
  }
}

strictKnownMarketplaces๋งŒ ์„ค์ •๋˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ /plugin marketplace add๋ฅผ ํ†ตํ•ด ํ—ˆ์šฉ๋œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž๋™์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ค‘์š” ์ฐธ๊ณ  ์‚ฌํ•ญ:

  • ์ œํ•œ์€ ๋„คํŠธ์›Œํฌ ์š”์ฒญ ๋˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์ž‘์—… ์ „์— ํ™•์ธ๋จ
  • ์ฐจ๋‹จ๋˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ์†Œ์Šค๊ฐ€ managed ์ •์ฑ…์œผ๋กœ ์ฐจ๋‹จ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ด…๋‹ˆ๋‹ค
  • ์ œํ•œ์€ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ถ”๊ฐ€ ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜, ์—…๋ฐ์ดํŠธ, ์ƒˆ๋กœ๊ณ ์นจ ๋ฐ ์ž๋™ ์—…๋ฐ์ดํŠธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ •์ฑ…์ด ์„ค์ •๋˜๊ธฐ ์ „์— ์ถ”๊ฐ€๋œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋Š” ํ•ด๋‹น ์†Œ์Šค๊ฐ€ ๋” ์ด์ƒ ํ—ˆ์šฉ ๋ชฉ๋ก๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
  • Managed ์„ค์ •์€ ์ตœ๊ณ  ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋ฉฐ ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

์‚ฌ์šฉ์ž ๋Œ€๋ฉด ๋ฌธ์„œ๋Š” Managed ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ œํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ฆฌ

/plugin ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋Œ€ํ™”ํ˜•์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค:

  • ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฐพ์•„๋ณด๊ธฐ
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜/์ œ๊ฑฐ
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ธ๋ถ€ ์ •๋ณด ๋ณด๊ธฐ (์ œ๊ณต๋˜๋Š” skills, agents, hooks)
  • ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ถ”๊ฐ€/์ œ๊ฑฐ

ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฌธ์„œ์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜

ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ค์ • ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜์ง€ ์•Š๊ณ  Claude Code ๋™์ž‘์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ณ€์ˆ˜๋Š” settings.json์˜ env ํ‚ค ์•„๋ž˜์—์„œ ๊ตฌ์„ฑํ•˜์—ฌ ๋ชจ๋“  ์„ธ์…˜์— ์ ์šฉํ•˜๊ฑฐ๋‚˜ ํŒ€์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์ฒด ๋ชฉ๋ก์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Claude๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ

Claude Code๋Š” ํŒŒ์ผ ์ฝ๊ธฐ, ํŽธ์ง‘, ๊ฒ€์ƒ‰, ๋ช…๋ น ์‹คํ–‰ ๋ฐ subagents ์กฐ์œจ์„ ์œ„ํ•œ ๋„๊ตฌ ์„ธํŠธ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„๊ตฌ ์ด๋ฆ„์€ ๊ถŒํ•œ ๊ทœ์น™ ๋ฐ hook ๋งค์ฒ˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ •ํ™•ํ•œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

์ „์ฒด ๋ชฉ๋ก ๋ฐ Bash ๋„๊ตฌ ๋™์ž‘ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ๋„๊ตฌ ์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐธ๊ณ  ํ•ญ๋ชฉ