Cmd. /branch (구 /fork)
현재 대화를 이 지점에서 분기하여 새 세션을 만드는 명령 (별칭 /fork)
핵심 요약
/branch [name](별칭/fork)는 현재 대화를 이 지점에서 분기하고 새 분기로 전환하며, 원본은 보존돼/resume로 돌아갑니다.v2.1.77에서/fork가/branch로 이름이 바뀌었습니다. 팀 문서에는/branch를 표준으로 적으세요.CLAUDE_CODE_FORK_SUBAGENT=1을 설정하면/fork는 별칭이 아니라 포크된 서브에이전트를 만듭니다(v2.1.117 이상, 실험적).- 포크된 서브에이전트는 전체 대화 기록·시스템 프롬프트·도구·모델을 상속하고, 도구 호출은 메인에 남지 않아 컨텍스트를 깨끗하게 유지합니다.
- 분기는 그 시점 컨텍스트를 복사하므로 이후 원본 변경은 반영되지 않습니다. 포크는 또 다른 포크를 만들 수 없습니다.
명령어 원본 선언
/branch [name]공식 설명 요약
/branch [name](별칭 /fork)는 현재 대화를 이 지점에서 분기(branch)하는 명령입니다.
실행하면 새 분기로 전환되고 원본 대화는 그대로 보존되며, 원본으로는 /resume로 다시 돌아갑니다.
한 작업 흐름에서 여러 방향을 탐색하거나 실험할 때 유용합니다.
공식 문서의 원문 설명은 다음과 같습니다.
Create a branch of the current conversation at this point. Switches you into the branch and preserves the original, which you can return to with
/resume. Alias:/fork.
선택 인자 name을 주면 분기 세션에 이름을 지정할 수 있습니다.
이름 변경 (v2.1.77)
/fork가 /branch로 이름이 바뀌었습니다. 현재 공식 문서는 /branch를 표준 명령으로,
/fork를 그 별칭(alias)으로 안내합니다. 팀 문서에는 /branch를 표준으로 적으세요.
CLAUDE_CODE_FORK_SUBAGENT 설정 시 동작 변경
CLAUDE_CODE_FORK_SUBAGENT 환경 변수를 설정하면 /fork는 더 이상 /branch의 별칭이 아니라
포크된 서브에이전트(forked subagent)를 생성합니다. 이 모드는 실험적이며 v2.1.117 이상이 필요합니다.
최소 지원 버전
v2.1.69: 줄바꿈이 포함된 대화에서 fork 시 multi-line 세션 제목 문제 수정v2.1.71: fork된 대화가 동일한 plan 파일을 공유하는 문제 수정v2.1.77:/fork→/branch이름 변경 (/fork는 별칭으로 유지)v2.1.116: transcript가 50MB를 넘는 conversation에서/branch가 거부되던 문제 수정v2.1.117: 포크된 서브에이전트(CLAUDE_CODE_FORK_SUBAGENT) 실험 기능 도입 — 이 버전 이상에서만/fork의 서브에이전트 동작 지원v2.1.129:/branch성공 메시지에 새 branch session id가 포함되어/resume로 찾기 쉬워짐
사용법
/branch
/branch experiment-orm인자 없이 실행하면 현재 시점의 대화가 새 분기로 복사되고 즉시 그 분기로 전환됩니다.
선택 인자 name을 붙이면 해당 이름으로 분기를 만듭니다. /fork도 동일하게 동작합니다(별칭).
원본 대화는 보존되며, 분기에서 다시 원본으로 돌아갈 때는 /resume를 사용합니다.
좋은 사용 예
- 리팩터링 방법 A와 B를 각각 다른 분기에서 실험
- 현재 작업을 보존하면서 대안적 접근법 탐색
- 디버깅 중 가설별로 분기 세션 생성
비슷한 명령어 추천
| 명령어 | 차이점 | 언제 선택 |
|---|---|---|
/branch | 현재 대화 분기 복사 | 실험·탐색 목적 |
/resume | 이전 세션 재개 | 중단된 작업 이어가기 |
/clear | 대화 초기화 | 완전히 새로 시작 |
활용 사례
- 구현 방식 비교: 한 분기는 ORM 사용, 다른 분기는 raw SQL 사용
- 위험한 변경 전 현재 상태를 분기로 백업
- 코드 리뷰에서 제안받은 여러 수정안을 분기별로 적용·비교
포크된 서브에이전트 모드 (CLAUDE_CODE_FORK_SUBAGENT)
CLAUDE_CODE_FORK_SUBAGENT=1을 설정하면 /fork가 /branch 별칭이 아니라
포크된 서브에이전트를 생성하는 명령으로 바뀝니다. 이 기능은 실험적이며 v2.1.117 이상에서만 동작하고,
대화형(interactive) 모드, 헤드리스(claude -p/비대화형) 모드, Agent SDK에서 모두 적용됩니다.
포크(fork)는 새 컨텍스트에서 시작하는 일반 서브에이전트와 달리 그 시점까지의 전체 대화를 그대로 상속합니다. 메인 세션과 같은 시스템 프롬프트, 도구, 모델, 메시지 기록을 보면서 상황을 다시 설명하지 않고 곁가지 작업을 맡길 수 있습니다. 포크의 도구 호출은 메인 대화에 남지 않고 최종 결과만 메시지로 돌아오므로 메인 컨텍스트 창이 깨끗하게 유지됩니다.
/fork draft unit tests for the parser changes so far위처럼 지시문(directive)을 함께 입력하면, Claude Code가 지시문 앞부분을 따서 포크 이름을 짓고, 포크는 프롬프트 아래 패널에 표시되어 백그라운드에서 실행됩니다. 작업이 끝나면 결과가 메인 대화에 메시지로 도착합니다.
| 구분 | 포크(fork) | 이름 있는 서브에이전트 |
|---|---|---|
| 컨텍스트 | 전체 대화 기록 상속 | 전달한 프롬프트로 새 시작 |
| 시스템 프롬프트·도구 | 메인 세션과 동일 | 정의 파일에서 가져옴 |
| 모델 | 메인 세션과 동일 | 서브에이전트 model 필드 |
| 프롬프트 캐시 | 메인 세션과 공유 | 별도 캐시 |
주의사항
- v2.1.71 이전에는 fork된 대화가 동일한 plan 파일을 공유하는 버그가 있었음 — 반드시 최신 버전 사용 권장
- fork 시점의 컨텍스트가 복사되므로, fork 후 원본 세션의 변경사항은 분기에 반영되지 않음
- 다수의 분기를 생성하면 세션 관리가 복잡해질 수 있으므로
name인자나/rename으로 구분 권장 CLAUDE_CODE_FORK_SUBAGENT가 설정된 환경에서는/fork가/branch별칭이 아니라 포크된 서브에이전트 동작으로 바뀌므로, 팀 문서에는/branch를 표준 명령으로 적으세요.- 포크된 서브에이전트 모드는 실험적 기능이며(v2.1.117 이상), 동작과 설정이 향후 변경될 수 있습니다. 또한 포크는 또 다른 포크를 생성할 수 없습니다.
출처
- Commands: https://code.claude.com/docs/en/commands
- Subagents (Fork the current conversation): https://code.claude.com/docs/en/sub-agents
- Environment variables: https://code.claude.com/docs/en/env-vars