사용자 설정
사용자 설정 (User Settings)
사용자 구성 파일의 전역 settings 블록에 대한 전체 참조예요.
출처: 문서
본문
설정이 위치하는 곳 (Where Settings Live)
Docker Agent는 어떤 에이전트 YAML과도 무관한 단일 사용자 레벨 구성 파일을 읽어요:
~/.config/cagent/config.yaml
그 안의 settings: 블록은 실행하는 모든 에이전트에 적용되는 선호 사항 — 모양, 동작, 알림, 몇 가지 전역 안전 기본값 — 을 담아요. settings: 아래의 모든 것은 선택 사항이에요; 설정되지 않은 필드는 문서화된 기본값으로 폴백돼요.
# ~/.config/cagent/config.yaml
settings:
theme: dracula
lean: false
sound: true
이 파일을 손으로 편집할 일은 거의 없어요. 대부분의 필드는 TUI의 /settings 대화상자(Appearance, Behavior, Notifications 탭)에서 관리돼요 — 거기서 Enter를 누르면 변경을 적용하고 유지해요. 소수의 필드(permissions, hooks, keybindings)는 대화상자 UI가 없고 파일을 직접 편집해서만 설정돼요.
Note 이 페이지는
settings:를 문서로 다뤄요. 사용자 구성 파일에는settings:밖의 최상위 섹션 —aliases:,providers:,board:,credential_helper:,sandbox_allowlist:— 도 있는데, 여기서는 다루지 않아요.
설정 참조 (Settings Reference)
| Setting | Type | Default | Description |
|---|---|---|---|
hide_tool_results |
boolean | false | TUI에서 도구 호출 결과를 기본적으로 숨김. --hide-tool-results 플래그와 Ctrl+O 토글을 미러링. |
expand_thinking |
boolean | false | 새 세션을 접힌 대신 펼쳐진 thinking/도구 블록으로 시작. |
split_diff_view |
boolean | true | 파일 편집 diff를 통합 대신 나란히(사이드바이사이드) 렌더링. |
render_images |
boolean | true | Kitty 그래픽 프로토콜로 TUI에서 이미지 렌더링. 도구 결과 이미지와 에이전트 응답의 Markdown 이미지 모두에 적용. 터미널이 Kitty를 지원하지 않으면 자동 비활성화. |
theme |
string | default | 테마 이름, 내장 테마 또는 ~/.cagent/themes/<name>.yaml 에서 로드. 특수 값 auto 는 터미널의 밝은/어두운 배경을 따름. Theming 참고. |
theme_dark |
string | default | theme: auto 이고 터미널 배경이 어두울 때 적용되는 테마. |
theme_light |
string | default-light | theme: auto 이고 터미널 배경이 밝을 때 적용되는 테마. |
YOLO |
boolean | false | 실행하는 모든 에이전트에 걸쳐 모든 도구 호출을 전역 자동 승인. --yolo 플래그와 /yolo 명령을 미러링. safety: autonomous 의 레거시 별칭; 둘 다 설정되면 safety가 이김. |
safety |
string | unset | 새 세션의 기본 안전 모드: strict, balanced, restricted, autonomous(다른 값은 구성 로딩 실패). 레거시 YOLO 플래그를 이김. 명시적 --safety / --yolo 플래그나 alias safety 옵션이 없을 때 적용되며, 에이전트 YAML의 agents.<name>.safety / runtime.safety 기본값보다 이김. 재개된 세션의 모드는 절대 바꾸지 않음. |
lean |
boolean | false | 대화형 실행의 기본 UI로 전체 TUI 대신 lean TUI(단순화된, 최소 크롬 인터페이스) 사용. |
tab_title_max_length |
int | 20 | 탭 제목의 최대 표시 길이; 더 긴 제목은 줄임표로 잘림. |
restore_tabs |
boolean | false | TUI 실행 시 이전에 열린 탭 복원. |
sound |
boolean | false | 작업 성공 또는 실패 시 알림음 재생. |
sound_threshold |
int | 10 | 성공음이 재생되기 전에 작업이 실행되어야 하는 최소 초 단위 시간 (실패는 항상 재생됨). |
snapshot |
boolean | false | 턴 경계에서 자동 shadow-git 스냅샷을 전역으로 활성화. Snapshots 참고. |
cache_stable_prompts |
boolean | false | 변경되는 신뢰할 수 있는 컨텍스트(날짜, 환경 정보, 동적 프롬프트 파일)를 고정 시스템 접두사에서 빼고 대신 시간순 업데이트를 추가해서, 긴 세션에서 프롬프트 캐시 적중률을 개선. |
warn_on_cache_miss |
boolean | false | 세션의 첫 호출 이후 어떤 모델 호출이 캐시된 입력 토큰이 없다고 보고하면(프롬프트 캐시 미스) 경고. /settings 의 Notifications 탭에서 관리. |
busy_send_mode |
string | steer | 에이전트가 작업 중일 때 보낸 메시지에 무슨 일이 일어나는지: steer 는 진행 중인 스트림에 주입; queue 는 현재 턴이 끝날 때까지 보류. |
interrupt_confirmation |
string | always | Esc 키가 실행 중인 스트림을 어떻게 중단하는지 제어: always(기본)는 확인 대화상자 표시; double-tap 은 1초 안에 Esc를 두 번 눌러야 함; none 은 확인 없이 즉시 중단. /settings 의 Behavior 탭에서 관리. |
permissions |
object | unset | 전역 도구 권한 규칙(allow / ask / deny), 에이전트 레벨 및 세션 레벨 권한과 병합. Permissions 참고. |
hooks |
object | unset | 모든 에이전트에 적용되는 전역 수명 주기 훅, 에이전트 구성 및 CLI 훅에 추가적(additive). Global (user-level) hooks 참고. |
keybindings |
array | unset | TUI 키보드 단축키 재매핑. 전체 동작 목록과 구문은 Custom Keybindings 참고. |
layout |
object | unset | 사이드바 위치와 섹션 가시성. 아래 Layout Settings 참고. |
레이아웃 설정 (Layout Settings)
layout 은 TUI의 사이드바를 커스터마이즈해요. 영(영) 값(생략된 layout: 블록, 또는 생략된 어떤 필드)이 기본이에요: 사이드바는 오른쪽, 모든 섹션 표시, 정상 간격.
| Field | Type | Default | Description |
|---|---|---|---|
sidebar_position |
string | right | right, left, top, bottom. Left/right는 전체 세로 사이드바 유지; top/bottom은 컴팩트 가로 밴드 렌더링. |
section_spacing |
string | normal | compact, normal, relaxed — 사이드바 섹션 사이의 빈 줄 수. |
hide_session_path |
boolean | false | 작업 디렉터리(세션 경로) 줄과 그 git 브랜치 숨김. |
hide_usage |
boolean | false | 토큰 사용 섹션 숨김. |
hide_agents |
boolean | false | Agents 섹션 숨김. |
active_agents_only |
boolean | false | Agents 섹션(및 상단/하단 밴드)에 전체 구성된 팀 대신 현재 세션에서 활성인 에이전트만 표시. Agents 섹션이 숨겨진 동안은 무시. |
hide_tools |
boolean | false | Tools 섹션 숨김. |
hide_todos |
boolean | false | Todos 섹션 숨김. |
settings:
layout:
sidebar_position: left
section_spacing: compact
hide_usage: true
완전한 예제 (Complete Example)
# ~/.config/cagent/config.yaml
settings:
theme: auto
theme_dark: dracula
theme_light: default-light
lean: false
expand_thinking: false
split_diff_view: true
render_images: true
hide_tool_results: false
sound: true
sound_threshold: 10
snapshot: true
cache_stable_prompts: true
warn_on_cache_miss: true
busy_send_mode: queue
interrupt_confirmation: double-tap
restore_tabs: true
tab_title_max_length: 24
layout:
sidebar_position: right
section_spacing: normal
permissions:
deny:
- "shell:cmd=sudo*"
allow:
- "read_*"
hooks:
session_start:
- type: command
command: "~/.config/cagent/hooks/session-start.sh"
keybindings:
- action: "commands"
keys: ["f2", "ctrl+k"]
우선순위 규칙 (Precedence Rules)
사용자 설정은 낮은 우선순위 소스예요: 그것들은 기본값을 세우고, 더 구체적인 것이 이겨요.
- CLI 플래그가 사용자 설정보다 이겨요 — true에서 false로 가는 단순 불리언 플래그는 제외.
docker agent run플래그가 설정을 미러링하는 곳에서, 특정 실행에 대해 플래그를 전달하면 그 실행에 한해 설정보다 우선하며, 플래그는 저장된 사용자 구성 파일을 결코 수정하지 않아요. 이는--lean/lean,--theme/theme, 안전 플래그--safety/--yolo(아래 참고)에 대해 깔끔하게 성립하며, 플래그가 명령줄에 명시적으로 전달됐는지 추적합니다.--hide-tool-results/hide_tool_results는 그렇지 않아요: "명시적으로 설정됐는지" 추적이 없는 평범한 불리언이므로,--hide-tool-results=false를 전달해도 그 실행에서 저장된hide_tool_results: true설정을 끌 수 없어요 — 저장된 true가 이기고 플래그 위에 다시 적용돼요. 켜기 위해 플래그를 전달하는 것은 저장된 설정과 무관하게 예상대로 동작해요. - 안전은 자체의 완전히 지정된 체인을 가져요. 새 세션에 대해 이 순서의 첫 번째 소스가 이겨요: 명시적
--safety플래그 > 명시적--yolo플래그 > aliassafety/yolo옵션 >settings.safety/settings.YOLO> 에이전트 YAML의agents.<name>.safety> 에이전트 YAML의runtime.safety> 내장 기본값(읽기 전용 도구 자동 승인, 나머지 다른 것 확인). 각 범위에서safety필드가 레거시YOLO/yolo불리언보다 이겨요. 따라서 당신의 설정은 에이전트 작성자가 YAML에서 선언한 어떤 것보다도 이겨요 — 파일, URL, OCI 레지스트리에서 로드된 에이전트 구성은 결코settings.safety, alias 옵션, CLI 플래그를 재정의할 수 없어요. 명시적--yolo=false는 그 실행에 대해 저장된YOLO: true/ aliasyolo를 억제해요(다른 설정과 YAML 기본값은 여전히 적용). 재개된 세션은 저장된 모드를 유지해요: 설정과 alias 기본값은 절대 만지지 않아요; 오직 명시적--safety나--yolo플래그만 재개를 재정의해요. Safety Modes 참고. - Alias는 CLI 플래그와 사용자 설정 사이에 위치해요. alias(
docker agent alias add ...)는 자신의yolo,safety,model,hide_tool_results,sandbox기본값을 묶을 수 있어요; 그것들은 해당 플래그가 명시적으로 전달되지 않았을 때 적용되는데, 사용자 설정이 하는 것과 같지만 사용자 설정 이후에 해석되어 alias 자신의 선택이 당신의 전역 기본값보다 우선해요. - 권한은 재정의가 아니라 병합돼요. 전역
settings.permissions와 에이전트 자신의permissions:는 평가 전에 단일deny → allow → ask패턴 집합으로 결합돼요 — 전역 deny는 에이전트 구성이 무엇을 허용하든 항상 차단해요. Merging Behavior 참고. - 훅은 재정의가 아니라 추가적(additive)이에요. 주어진 수명 주기 이벤트에 대해 에이전트 구성,
settings.hooks,hooks.d/drop-in,--hook-*CLI 플래그의 훅이 모두 그 순서로 실행돼요. 전역 훅은 개별 에이전트가 억제할 수 없어요. - 다른 모든 것은 평범한 기본값이에요. CLI나 에이전트 구성에 대응이 없는 필드(
sound,sound_threshold,restore_tabs,tab_title_max_length,split_diff_view,render_images,cache_stable_prompts,warn_on_cache_miss,busy_send_mode,keybindings,layout)는 오직settings:(또는 그것을 쓰는/settings대화상자)에서만 오고 — 실행별로 재정의할 것이 없어요.