AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

Claude Code 팁 – 현재 날짜와 시간을 매 프롬프트에 주입하기

Claude Code를 하루 이상 열어 둔 장기 세션에서는 모델이 세션 시작 시점의 시간 감각에 머무를 수 있다. SessionStart에 한 번 시간을 넣는 것보다 UserPromptSubmit 이벤트마다 현재 로컬 시간을 주입하는 훅이 더 안정적이다.

문제

세션이 계속 열려 있으면 “오늘”, “어제”, “방금”, “오전 회의 후” 같은 표현이 실제 시간과 어긋날 수 있다. 사용자가 매번 “지금은 2026년 6월 30일 오후…”라고 적는 방식은 작동하지만 반복 비용이 크다.

해결 패턴

Claude Code 훅은 특정 이벤트마다 셸 명령을 실행하고, 그 출력을 모델 컨텍스트에 추가할 수 있다. 시간 주입에는 UserPromptSubmit이 맞다. 이 이벤트는 사용자가 프롬프트를 보낼 때마다 실행되므로, 세션이 밤새 열려 있어도 다음 입력에는 최신 시간이 들어간다.

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "jq -n --arg ctx \"$(date '+%A, %B %-d, %Y at %-I:%M %p %Z (UTC%z)')\" '{hookSpecificOutput:{hookEventName:\"UserPromptSubmit\",additionalContext:(\"Current local date and time: \" + $ctx + \". This is refreshed on every message; use it as your reference for \\\"now\\\" and \\\"today\\\".\")}}'"
          }
        ]
      }
    ]
  }
}

전역 설정은 보통 ~/.claude/settings.json에 넣는다. 이미 hooks 키가 있다면 덮어쓰지 말고 UserPromptSubmit 항목을 병합한다.

왜 SessionStart가 아닌가

SessionStart는 Claude Code를 시작하거나 세션을 새로 만들 때만 실행된다. 터미널을 열어 둔 채 몇 시간 뒤 다시 입력하는 상황에서는 새 세션이 시작되지 않았으므로 시간이 갱신되지 않는다. “시작 시각을 알려주는 문제”가 아니라 “시간이 흐른다는 사실을 알려주는 문제”이기 때문에 입력마다 실행되는 훅이 필요하다.

적용할 만한 경우

  • 하루 종일 유지하는 Claude Code 세션
  • 일정, 로그, 배포 시간, 빌드 경과 시간처럼 상대 시간이 중요한 작업
  • @today, “어제 변경분”, “이번 오전” 같은 표현을 자주 쓰는 팀 워크플로

관련 문서

참고 자료



AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)