Skip to content

Locale ko · en

메인 에이전트를 망가뜨리지 말고 — Cursor Side Chat과 클라우드 대화 훅

By PapaCoder · Published 3 Aug 2026

Summary

Cursor 3.11 Side Chat으로 옆길을 분리하고, beforeSubmitPrompt·afterAgentThought 등 클라우드 대화 훅으로 무인 에이전트를 관측·제어하는 실전 가이드.

에이전트에게 큰 작업을 맡긴 직후, “잠깐, 이 타입은 어디서 등록하지?” 같은 옆길이 떠오르는 순간이 있습니다. 메인 채팅에 물어보면 계획이 흐트러지고, 새 채팅을 열면 맥락이 끊깁니다.

핵심 한 줄: Cursor 3.11의 Side Chat으로 옆길을 분리하고, 클라우드 에이전트에는 .cursor/hooks.json대화 수준 훅(beforeSubmitPrompt, afterAgentThought 등)으로 “도구만 감시”가 아니라 프롬프트·사고·응답까지 관측·제어하세요.

2026-07-10 릴리스(Changelog)와 Hooks 문서를 기준으로, IDE 흐름과 무인 클라우드 런을 한 세트로 정리합니다.

왜 중요한가

에이전트 UX의 병목은 모델 성능만이 아닙니다. 한 스레드에 모든 질문이 쌓이면 컨텍스트가 오염되고, 클라우드에서는 도구 실행만 로그해 두면 “왜 그 결정을 했는지”가 비어 있습니다.

Side Chat은 메인 작업을 유지한 채 조사·비교·확인을 분리합니다. 대화 훅은 클라우드에서 이미 있던 셸/파일/툴 훅을 넘어, 프롬프트 제출 전 차단, thinking 기록, 턴 종료 후 후속까지 레포에 코드로 심을 수 있게 합니다. 팀 표준을 “문서”가 아니라 훅 스크립트로 옮기는 전환점입니다.

이전 방식과 무엇이 다른가

접근잘하는 일부족한 점
메인 채팅에 옆질문 끼워 넣기맥락 공유가 쉬움계획·도구 호출 히스토리가 오염됨
완전히 새 Agent 세션격리메인 맥락 재설명 비용
툴/셸 훅만 사용 (3.11 이전 클라우드)위험한 명령·파일 편집 게이트프롬프트·reasoning이 맹점
Side Chat + 대화 훅옆길 분리 + 클라우드 대화 관측/제어훅 설계·검증 비용; 플랜/버전별 실측 필요

VS Code 계열의 “멀티 챗”과 겉모습은 비슷하지만, Cursor Side Chat은 메인에서 컨텍스트를 받아 시작하고 나중에 @멘션으로 결과를 되돌리는 왕복이 제품 스토리의 핵심입니다. 클라우드 훅은 IDE 개인 ~/.cursor/hooks.json이 아니라 **레포의 .cursor/hooks.json**이 따라갑니다 — 무인 런에 팀 정책이 붙는 이유입니다.

Side Chat과 대화 검색

Changelog 기준:

  • /side, /btw, 또는 채팅 패널 상단 + 로 Side Chat 생성
  • 메인 채팅 컨텍스트를 가진 내구성 있는(full) 에이전트 대화
  • 결과를 메인으로 끌어올 때 @멘션

Agents Window에서는 Cmd+K로 로컬 인덱스 기반 트랜스크립트 검색(이름·PR 번호 수준을 넘는 본문 검색), 대화 안에서는 Cmd+F로 매치 점프·카운터를 제공합니다. 긴 에이전트 로그를 “스크롤 기억”에 의존하지 않게 만드는 기능입니다.

처음 Side Chat을 열었을 때는 “그냥 두 번째 탭”처럼 느껴졌습니다. 메인 리팩터 중간에 /btw로 타입 등록 위치를 물었더니, 메인 스레드의 계획 문장이 깨지지 않은 채로 답만 받아 온 뒤에야 “아, 격리의 가치가 여기구나” 싶었습니다.

클라우드 대화 훅이 여는 것

클라우드 에이전트는 레포 루트 .cursor/hooks.json커맨드 기반 훅을 읽습니다. Enterprise는 대시보드의 팀/엔터프라이즈 훅도 함께 돌릴 수 있습니다. 사용자 홈의 훅은 클라우드 VM에 없습니다.

공식 문서상 클라우드에서 지원되는 예:

  • 도구/파일/셸: beforeShellExecution, afterFileEdit, preToolUse
  • 대화/서브에이전트: beforeSubmitPrompt, afterAgentResponse, afterAgentThought, subagentStart / subagentStop, preCompact, stop

클라우드에서 안 되는 대표 예: sessionStart / sessionEnd(세션 경계가 IDE와 다름), MCP 전후 훅, Tab 훅, workspaceOpen. 또한 초반 읽기 전용 탐색 턴에서는 훅이 돌지 않고, 쓰기 가능한 환경이 된 뒤부터 시작합니다. 클라우드는 prompt-based 훅이 아니라 command-based만 지원합니다.

코드 / 설정 예시

최소 관측 파이프라인 — 프롬프트 제출 전 게이트 + thinking/응답 JSONL 적재:

{
  "version": 1,
  "hooks": {
    "beforeSubmitPrompt": [
      { "command": ".cursor/hooks/gate-prompt.py" }
    ],
    "afterAgentThought": [
      { "command": ".cursor/hooks/log-thought.py" }
    ],
    "afterAgentResponse": [
      { "command": ".cursor/hooks/log-response.py" }
    ],
    "subagentStart": [
      { "command": ".cursor/hooks/gate-subagent.py" }
    ],
    "stop": [
      { "command": ".cursor/hooks/on-stop.py" }
    ]
  }
}

beforeSubmitPrompt 입출력 뼈대(docs):

#!/usr/bin/env python3
import json, sys

payload = json.load(sys.stdin)
prompt = payload.get("prompt") or ""
# 예: 비밀/프로덕션 URL 패턴이 프롬프트에 있으면 차단
blocked = "PRODUCTION_DATABASE_URL" in prompt
out = {
    "continue": not blocked,
    "user_message": "Prompt blocked: looks like a production secret reference."
    if blocked else None,
}
print(json.dumps({k: v for k, v in out.items() if v is not None}))

afterAgentThoughttext(집계된 thinking)와 optional duration_ms를 받으며, 현재 문서 기준 출력 필드는 없습니다 — 관측/로깅용입니다. 커맨드 훅에서 exit code 2는 액션 차단(deny)과 같습니다.

실무에서 쓰는 법

  1. 메인 스레드 규칙: “구현·테스트·커밋”만 메인. 조사·비교·문서 발췌는 Side Chat.
  2. 되돌리기: Side Chat 결론을 @로 메인에 한 줄 요약으로 주입한 뒤, 메인이 실행 계획만 갱신.
  3. 클라우드 최소 훅 세트: beforeSubmitPrompt(프롬프트 정책) + beforeShellExecution(위험 명령) + afterAgentThought/afterAgentResponse(감사 로그) + 필요 시 subagentStart 게이트.
  4. 검색: 어제 에이전트가 낸 에러 문구는 Agents Window Cmd+K로 먼저 찾고, 같은 실수를 Side Chat에서 재현하지 않기.
  5. 검증: 문서는 지원한다고 해도, 팀 플랜·버전에서 afterAgentResponse/stop이 기대대로 도는지 스테이징 클라우드 런으로 한 번 실측.

시니어 엔지니어 시선

Side Chat은 UX 편의 기능을 넘어 컨텍스트 위생 도구입니다. 멀티에이전트 팀을 돌릴수록 “한 대화에 모든 것”은 리뷰 불가능한 트랜스크립트를 만듭니다.

대화 훅은 보안팀 입장에서 더 중요합니다. 셸 가드만으로는 “누가 어떤 프롬프트로 프로덕션을 건드렸는지”를 설명하기 어렵습니다. beforeSubmitPrompt로 입구를 막고, thinking/response를 append-only 로그로 남기면, 나중에 사고 대응이 툴 호출 목록 나열이 아니라 의사결정 타임라인이 됩니다. 다만 로그에 코드·PII가 들어갈 수 있으니 보관·마스킹 정책을 같이 설계하세요.

Cursor에서 바로 적용

  1. 긴 리팩터 중 /btw로 API 존재 여부만 Side Chat에 묻기.
  2. 레포에 .cursor/hooks.json + 실행 가능 스크립트를 커밋(클라우드가 홈 디렉터리 훅을 못 쓰므로).
  3. 클라우드 에이전트 런 한 번으로 agent-events.jsonl이 쌓이는지 확인.
  4. Agents Window Cmd+K로 과거 “비슷한 버그” 대화를 찾아 Side Chat에 붙여 재질문.

FAQ

Q. Side Chat도 파일을 수정하나요?
A. Changelog는 내구성 있는 full agent conversation이라고 설명합니다. 읽기·조사에 쓰는 습관을 권장하지만, 편집 권한은 세션/모드 설정에 따릅니다. 메인과 동시에 쓰기 경쟁이 나지 않게 역할을 나누세요.

Q. 클라우드에서 홈 디렉터리 hooks.json을 쓰나요?
A. 아니요. 공식 문서: user-level ~/.cursor/hooks.json은 클라우드에서 사용 불가. 프로젝트 .cursor/hooks.json(및 Enterprise 팀 훅)을 쓰세요.

Q. afterAgentThought로 응답을 고칠 수 있나요?
A. 문서상 현재는 입력만 있고 출력 필드가 없습니다. 수정·차단은 beforeSubmitPrompt, 셸/툴 훅, subagentStart 등 제어형 훅을 쓰세요.

Q. 커뮤니티에서 훅이 안 뜬다는 말이 있던데요?
A. CLI/클라우드 패리티 이슈가 포럼에 논의된 적이 있습니다. 공식 docs의 cloud support 표를 기준으로 하고, 프로덕션 게이트 전에 실측하세요.

출처

마무리

에이전트 생산성은 “더 긴 한 줄 프롬프트”가 아니라 스레드 분리와 관측 가능성에서 갈립니다. Side Chat으로 옆길을 빼고, 클라우드에는 대화 훅으로 입구와 사고 로그를 심어 두면, 무인 런이 “검은 상자 diff”에서 설명 가능한 작업으로 바뀝니다.

앞으로는 IDE 단축키 경쟁보다, 레포에 커밋된 훅이 팀의 기본 운영체제가 되는 쪽이 격차를 벌릴 가능성이 큽니다.

Related posts

More in Cursor

Comments

Checking sign-in…

No comments yet.