AX 팁 1 — 세션 이름은 훅이 먼저 붙이게

작성 · 수정

  • AX 팁
  • Claude Code
  • 개발 환경 자동화
  • 훅

Claude Code 세션 이름은 사람이 /rename 으로 붙이기 전에 훅이 먼저 붙이게 하면 됩니다. SessionStart 훅이 출력 JSON 에 sessionTitle 을 넣으면 /rename 과 같은 효과가 나서, 터미널 탭 제목이 대화 주제에 따라 흔들리지 않고 처음부터 [대][중]-소 형식으로 고정됩니다. 이름 가운데에 「분석」「개발」 같은 역할 태그를 넣어 두면, 다른 훅이 그 이름을 읽고 분석용 세션에서 코드를 고치려는 실수까지 멈출 수 있습니다.

이 글은 혼자 쓰는 개발 환경을 AI 에이전트 중심으로 바꾸면서(AX, AI 전환) 만든 장치를 하루에 하나씩 정리하는 연재의 첫 편입니다.

왜 탭 제목이 자꾸 바뀌었을까?

저는 Orca 라는 터미널 앱에 Claude Code 세션을 여러 개 띄워 둡니다. 블로그 글을 쓰는 탭, 사이트를 고치는 탭, 자동화를 손보는 탭이 동시에 열려 있는 식입니다. 그런데 이름을 붙이지 않은 세션은 Claude Code 가 프롬프트마다 대화 주제로 터미널 제목을 새로 짓습니다. 간단한 계산 하나를 물어본 탭은 제목이 1+1 계산 으로 바뀌어 있었습니다. 탭이 여러 개가 되자 어느 탭이 무슨 일을 하던 곳인지 매번 눌러 봐야 했습니다.

처음엔 무엇을 시도했을까?

첫 번째로 탭을 만들 때 제목을 정해 주었습니다. orca terminal create --title 로 제목을 주고 열었는데, Claude Code 가 시작하자마자 제목을 Claude Code 로 덮어썼습니다. 두 번째로는 환경변수 CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1 로 제목 바꾸기를 아예 껐습니다. 흔들림은 멈췄지만 이번엔 세션 이름까지 제목에 나오지 않아 모든 탭이 똑같아 보였습니다. 둘 다 2026-10-07 에 직접 해 보고 버린 방법입니다.

막힌 점은 무엇이었나?

해 보고 나서 규칙을 알았습니다. 세션에 이름이 있으면 제목은 그 이름으로 고정되고, 이름이 없을 때만 주제를 따라 바뀝니다. 결국 답은 「항상 이름을 붙인다」였는데, 문제는 제가 /rename 을 자주 잊는다는 것이었습니다. 사람이 기억해야 하는 규칙은 바쁠 때 가장 먼저 빠집니다. 그래서 기억하는 일을 훅에 넘기기로 했습니다.

훅으로 어떻게 바꿨나?

SessionStart 훅은 세션을 새로 열 때, 이어 열 때, 갈라 열 때 실행됩니다. 출력의 hookSpecificOutput 에 sessionTitle 을 넣으면 그 이름이 세션에 붙습니다. 실제 훅을 줄여 보면 이렇습니다.

APPLY_SOURCES = ("startup", "resume", "fork")   # clear·compact 에는 적용되지 않는다

def auto_title(payload):
    if payload.get("session_title") or payload.get("source") not in APPLY_SOURCES:
        return None                              # 이미 이름이 있으면 건드리지 않는다
    return "[%s][분석]-기본" % major_of(payload["cwd"])

out = {"hookEventName": "SessionStart", "sessionTitle": auto_title(payload)}
print(json.dumps({"hookSpecificOutput": out}))

맨 앞 대분류는 같은 폴더에서 최근에 쓴 세션 이름들 가운데 가장 많이 쓴 것을 고릅니다. 처음에는 가장 최근 하나만 봤는데, 한 번 낸 오타가 다음 세션 이름으로 그대로 옮겨 가서 「가장 많이 쓴 것」으로 바꿨습니다. 기본 역할은 「분석」으로 둡니다. 분석 세션에서 파일을 고치거나 커밋하려 하면 다른 훅(PreToolUse)이 이름을 읽고 멈추게 해 두었기 때문에, 가장 안전한 쪽을 기본값으로 고른 것입니다.

마지막 칸인 「소」는 하는 일에 따라 바꿉니다. 첫 입력이 슬래시 명령이면 훅이 소를 그 명령 이름으로 바로 바꾸고, 그 밖에는 -기본 으로 두었다가 첫 작업을 마칠 때 에이전트가 내용을 보고 이름을 짓습니다. 이름을 바꾸는 작은 스크립트는 새 이름을 파일에 적어 두고, 다음 프롬프트의 UserPromptSubmit 훅이 그 파일을 읽어 sessionTitle 로 적용합니다. 같은 순간에 orca terminal rename 으로 Orca 탭 이름도 함께 바꿉니다.

훅이 세션 이름을 붙이는 흐름세션 열기 (startup·resume·fork) → 이미 이름이 있나?; 이미 이름이 있나? → 그대로 둔다 (예); 이미 이름이 있나? → [대][분석]-기본 붙이기 (아니오); [대][분석]-기본 붙이기 → 첫 입력이 슬래시 명령?; 첫 입력이 슬래시 명령? → 소 = 명령 이름 (예); 첫 입력이 슬래시 명령? → 첫 작업 뒤 에이전트가 소를 짓기 (아니오)예아니오예아니오세션 열기(startup·resume·fork)이미 이름이 있나?그대로 둔다[대][분석]-기본붙이기첫 입력이 슬래시 명령?소 = 명령 이름첫 작업 뒤 에이전트가소를 짓기
훅이 세션 이름을 붙이는 흐름 — clear·compact 는 대상이 아니다

사람이 답할 수 없는 무인 실행(claude -p)에는 이름을 묻는 안내를 넣지 않습니다. 무인 실행 시험에서 이 안내가 마지막 답을 가로채 엉뚱한 질문으로 끝난 일이 있었기 때문입니다.

지금 하루는 어떻게 달라졌나?

탭을 훑어보면 무엇을 하는 세션인지 바로 보입니다. [블로그][개발]-robots, [사이트][분석]-검색통계 처럼 대분류·역할·주제가 한 줄에 나옵니다. 2026-10-19 에 잰 값으로, 2026-10-12 이후 쓴 세션 기록 211개 가운데 206개에 이름이 붙어 있었습니다. 이름을 붙이는 두 훅 파일을 고친 커밋은 지금까지 10개입니다. 이제 이름 붙이기는 제가 기억할 일이 아니라 훅이 하는 일입니다.

이름 붙이기 전과 후사람이 /rename: 바쁠 때 자주 잊음, 탭 제목이 대화 주제를 따라 바뀜, 무슨 탭인지 눌러 봐야 앎 → 훅이 먼저: 열 때 기본 이름이 붙음, 제목이 처음부터 고정, 역할 태그로 실수를 멈춤사람이 /rename바쁠 때 자주 잊음탭 제목이 대화 주제를따라 바뀜무슨 탭인지 눌러 봐야앎훅이 먼저열 때 기본 이름이붙음제목이 처음부터 고정역할 태그로 실수를멈춤
이름 붙이기 전과 후

자주 묻는 질문

훅이 붙인 이름이 내가 정한 이름을 덮어쓰지는 않나요?

이미 이름이 있는 세션은 건드리지 않습니다. 훅에 들어오는 값에 세션 이름이 있으면 바로 빠져나가고, 이름이 없는 세션을 새로 열거나 이어 열 때만 기본 이름을 붙입니다.

/clear 나 컴팩트 뒤에도 이름이 붙나요?

SessionStart 훅이 clear·compact 에서 돌려준 이름은 적용되지 않으므로 처음부터 대상에서 뺐습니다.

꼭 Orca 같은 터미널 앱이 있어야 하나요?

아닙니다. 세션 이름은 Claude Code 기능이라 어떤 터미널에서도 탭 제목이 고정됩니다. Orca 탭 이름을 같이 바꾸는 부분만 Orca 전용입니다.

사이트를 만들어볼까요?

무료 상담 받기