Claude 엔터프라이즈 추론 훅, 어떻게 동작하나?

Claude 엔터프라이즈 추론 훅은 프롬프트와 툴 호출을 조직의 보안 서버로 보내, 허용 또는 거부 판정을 받은 뒤에야 Claude가 다음 단계로 넘어가게 한다.

영어 원문을 한국어로 옮긴 글이에요.Read in English

핵심 정리

  • 추론 훅은 2026년 10월 20일 베타를 벗어났고, 11월 5일 보안 업데이트는 정식 출시(GA) 기능으로 소개한다.
  • 훅은 프롬프트와 툴 호출을 조직 서버로 보내고, 서버가 허용이나 거부로 답해야 Claude가 다음 단계로 넘어간다.
  • 요청을 막는 응답은 HTTP 200에 deny 동작이 담긴 경우뿐이다. 오류와 시간 초과는 실패 처리 설정을 따르고, 기본값은 실패 시 허용(fail open)이다.
  • 판정 제한 시간은 1ms에서 10,000ms 사이이고 기본값은 5,000ms다.
이 글의 차례
  1. 11월 5일 Claude Enterprise에서 무엇이 바뀌었나?
  2. Claude Enterprise 추론 훅은 어떻게 동작하나?
  3. 판정 응답은 어떤 모양인가?
  4. 추론 훅은 어떻게 만들고 켜나?
  5. 보안 서버가 실패하면 어떻게 되나?
  6. AI 에이전트를 쓰는 팀에는 무엇이 달라지나?
  7. 한계와 남은 질문은?

Claude Enterprise 추론 훅(inference hooks)은 관리 대상 프롬프트를 빠짐없이, 그리고 선택하면 툴 호출 묶음까지 조직이 운영하는 AI 보안 서버로 보낸다. Claude는 서버가 허용 또는 거부 판정을 내릴 때까지 모델과 툴을 멈춰 둔다. Anthropic은 2026년 11월 5일 보안 업데이트에서 추론 훅을 정식 출시(GA) 기능으로 소개했고, 함께 발표한 다른 통제 기능 4가지는 대부분 베타다 [1].

릴리스 노트를 보면 추론 훅이 베타를 벗어난 날은 2026년 10월 20일이다 [5].

11월 5일 Claude Enterprise에서 무엇이 바뀌었나?

11월 5일 업데이트는 보안팀을 위한 통제 기능을 다섯 영역으로 묶어 소개한다. 이 가운데 정식 출시로 소개하는 기능은 추론 훅 하나뿐이다 [1]. 다만 정식 출시 자체는 11월 5일보다 앞선다. 릴리스 노트에는 추론 훅이 2026년 8월 5일 베타로 나왔고 2026년 10월 20일 베타를 벗어났다고 적혀 있다 [5]. 나머지 기능은 대부분 베타로 나왔고, EDR 연결 기능은 Claude Team 플랜에서도 쓸 수 있다.

기능상태하는 일
추론 훅정식 출시(2026년 10월 20일 베타 종료)조직 서버가 프롬프트와 툴 호출을 실행 전에 허용하거나 거부한다
보안 센터베타채팅, Cowork, Claude Code 설정을 Anthropic 권장값과 비교한다
중앙 관리베타여러 조직의 SSO, SCIM, 도메인, 그룹, Compliance API 키를 상위 콘솔 하나에서 관리한다
접근 통제베타(외부 계정 차단에는 베타 표시가 없다)모든 곳에서 구성원 로그아웃, 셀프서비스 IP 허용 목록, Claude Desktop 설정, 외부 계정 차단
Cowork의 EDR베타(Team과 Enterprise)조직의 EDR 센서가 로컬 Cowork 가상 머신 안에서 돌아간다

이 글이 추론 훅을 가장 길게 다루는 이유는 두 가지다. 개발자가 직접 만들어야 하는 유일한 부분이고, 에이전트의 모든 동작이 지나가는 길목에 놓이기 때문이다 [2].

Claude Enterprise 추론 훅은 어떻게 동작하나?

추론 훅은 Anthropic이 조직의 AI 보안 서버로 보내는 서명된 HTTPS POST 요청이다. 요청이 클라이언트를 떠난 뒤, 모델이 돌기 전에 보낸다 [2]. 검사가 Anthropic 서버에서 돌기 때문에 조직 안의 모든 Claude 제품에 똑같이 적용되고, 사용자 기기에 따로 설치할 것도 없다.

이벤트는 두 가지다. prompt 프레임은 관리 대상 추론 요청마다 한 번, 추론을 시작하기 전에 간다. tool_call 프레임은 조직이 Validate tool calls를 켜 두었을 때 쓰인다. Claude의 응답에 툴 호출이 들어 있으면 툴 호출이 하나라도 실행되기 전에 이 프레임이 간다 [2]. 판정 하나가 툴 호출 프레임 전체에 적용되므로, 한 응답 안에서 일부 호출만 허용하고 나머지를 거부할 수는 없다 [4].

시퀀스 다이어그램: Anthropic 서버가 서명된 prompt 프레임을 AI 보안 서버로 보내 추론 전에 허용 또는 거부 판정을 기다리고, 툴이 실행되기 전에는 툴 호출을 tool_call 프레임 하나로 묶어 보낸다.
Claude Enterprise 요청에서 추론 훅이 멈춰 세우는 지점: 추론 직전, 그리고 Validate tool calls를 켰다면 툴 실행 직전(출처 [2], [4]).

보안 서버가 받는 내용은 사용자가 화면에서 보는 내용과 같다. 대화 기록 텍스트, 툴 호출과 호출 결과, 첨부 파일에서 뽑아낸 텍스트가 전달된다. 파일이나 이미지의 원본 바이트, 시스템 프롬프트, 툴 정의, Claude의 숨은 추론은 받지 않는다 [4]. 코드 실행 툴 안에서 코드가 부르는 툴 호출도 실행 전에 별도의 툴 호출 프레임으로 전달된다.

적용 범위는 넓지만 모든 경우를 덮지는 않는다. 훅 하나로 claude.ai, Cowork, Claude Code, Claude for Microsoft 365, Claude Tag, Claude in Chrome을 모두 관리하며, 사용자가 웹과 데스크톱, 모바일, CLI, Slack 가운데 어디서 쓰든 똑같이 적용된다. 반면 Amazon Bedrock이나 Google Cloud에서는 이 기능을 쓸 수 없고, Claude Platform으로 API를 쓰는 조직도 적용 대상에서 빠진다 [2].

판정 응답은 어떤 모양인가?

판정은 HTTP 200과 함께 돌려주는 작은 JSON 객체다. {"action": "allow"}를 돌려주면 요청이 그대로 진행된다. 거부할 때는 사용자에게 보여 줄 deny_reason을 최대 500자까지 붙이고, 조직의 기록용으로 reference_id를 최대 50자까지 선택해 넣을 수 있다 [4].

JSON
{
  "action": "deny",
  "deny_reason": "This prompt appears to contain payment card numbers. Remove them and send it again.",
  "reference_id": "scan_0001"
}

오류는 거부로 처리되지 않는다. 200이 아닌 상태 코드, 해석할 수 없는 본문, allow나 deny가 아닌 action 값은 모두 웹훅 실패로 처리되고, Anthropic은 응답을 최대 64KiB까지만 읽는다 [4]. 실패하면 실패 처리 설정을 따르기 때문에, 프롬프트를 막으려고 403을 돌려주는 서버는 실제로는 요청을 통과시킬 수도 있다.

추론 훅은 어떻게 만들고 켜나?

먼저 HTTPS 서비스를 만들고 요청마다 Anthropic의 서명을 검증하게 한다. 그다음 Owner나 Primary owner가 claude.ai의 Organization settings 아래 Data and privacy에서 서비스를 연결한다 [3]. organization:manage 권한은 이 두 역할에만 있고, Admin 역할에는 없다.

요청은 Standard Webhooks 방식을 따른다. webhook-signature 헤더에는 {webhook-id}.{webhook-timestamp}.{raw body}를 HMAC-SHA256으로 서명한 값이 담긴다. 서버 시계와 5분 넘게 차이 나는 타임스탬프는 거부하는 편이 좋고, 서명 시크릿은 whsec_ 접두사 뒤에 오는 표준 base64 값이다 [4]. 문서에 나온 절차를 따른 최소 검증 코드는 다음과 같다.

Python
import base64, hashlib, hmac, os, time

def verify(headers: dict, body: bytes) -> bool:
    h = {k.lower(): v for k, v in headers.items()}
    msg_id = h.get("webhook-id")
    ts = h.get("webhook-timestamp")
    sigs = h.get("webhook-signature")
    if not (msg_id and ts and sigs and ts.isdigit()) or abs(time.time() - int(ts)) > 300:
        return False
    raw = os.environ["INFERENCE_HOOKS_SIGNING"].removeprefix("whsec_")
    mac = hmac.new(base64.b64decode(raw), f"{msg_id}.{ts}.".encode() + body, hashlib.sha256)
    expected = b"v1," + base64.b64encode(mac.digest())
    return any(hmac.compare_digest(expected, s.encode()) for s in sigs.split())

이어서 엔드포인트를 다음 순서로 준비한다.

  1. Anthropic이 접근할 수 있는 곳에 둔다. URL은 443 포트의 https://여야 하고, IPv4 주소가 있는 공개 라우팅 가능 호스트에 있어야 하며, 리디렉션이 없어야 한다. ngrok 같은 리버스 터널은 막힌다 [3]. 요청은 160.79.106.0/24 대역에서 오므로, 서명 검증과 함께 이 대역을 허용 목록에 넣을 수 있다 [4].
  2. 본문 크기 제한을 늘린다. 대화 기록은 자르지 않고 그대로 보낸다. 본문은 보통 10MB 안쪽이지만 프로토콜은 64MiB까지 허용한다. 반면 nginx의 기본 제한은 1MB이고 Express express.json()의 기본 제한은 100kB다 [4].
  3. 엔드포인트를 저장하고 서명 시크릿을 보관한다. 시크릿은 한 번만 보이고, 저장한 뒤에는 교체만 할 수 있다. 호출자를 인증하는 사용자 지정 요청 헤더를 최대 16개까지 더할 수 있고, 마지막으로 Test connection을 실행한다 [3].
  4. 실패 처리 방식과 제한 시간을 고른다. Block the request는 실패하면 요청을 막고(fail closed), Allow the request는 실패하면 요청을 통과시킨다(fail open). 제한 시간은 1ms에서 10,000ms 사이로 정하고, 처음 저장할 때 기본값은 Allow the request와 5,000ms다 [3].
  5. 섀도 모드로 시작한다. 서버가 실제 트래픽에 판정을 돌려주지만 아무것도 막지 않는다. 0에서 100까지 정하는 적용 비율과 역할별 제외 설정으로 차단 범위를 조금씩 넓힐 수 있다 [3].
  6. Enforce verdicts를 켠다. 변경이 모든 Anthropic 서버에 반영되기까지 1분쯤 걸린다 [3].

운영을 시작하면 지켜야 할 규칙이 두 가지 있다. Anthropic은 연결 시도 자체가 실패했을 때만, 100ms 뒤에 딱 한 번 재시도한다. 따라서 webhook-id로 중복 요청을 걸러 낼 수 있다 [4]. 또 처음 보는 이벤트 type이 담긴 프레임이 오면 오류 대신 allow를 돌려주라고 문서는 안내한다. 새 이벤트 타입이 추가될 예정이어서다.

보안 서버가 실패하면 어떻게 되나?

서버에 연결할 수 없거나, 응답이 느리거나, 서버가 고장 나면 실패 처리 설정이 결과를 정한다. 실패가 계속되면 회로 차단기(circuit breaker)가 작동해 Anthropic이 서버 호출을 아예 멈춘다 [3]. 차단기가 작동한 동안에는 검사 대상 요청 전부에 실패 처리 설정이 적용된다. 그래서 Block the request를 골랐다면 차단기가 풀릴 때까지 사용자 요청이 모두 막힌다.

차단기가 작동하고 10분이 지나면 Anthropic은 1분에 한 번쯤 백그라운드 테스트 요청을 보내고, 올바른 판정이 돌아오면 차단기를 되돌린다 [4]. 차단기가 작동할 때마다 Activity Feed에 inference_hooks_circuit_breaker_tripped 활동이 남으므로 SIEM에서 알림을 걸 수 있다. 단, Activity Feed를 쓰려면 Compliance API를 켜야 한다 [3].

AI 에이전트를 쓰는 팀에는 무엇이 달라지나?

Claude Code나 Cowork에 일을 맡기는 팀에게 실제로 달라지는 점은 tool_call 프레임이다. 이제 정책 하나로 bash 명령이나 커넥터 호출을 실행 전에 막을 수 있고, 한곳에서 정한 정책이 모든 구성원에게 적용된다 [2][4]. 대신 판정을 받을 때마다 보안 서버를 오가는 시간이 관리 대상 요청 전부에 더해진다. 대규모로 적용하기 전에 서버 부하 테스트를 해 두는 편이 좋다.

다른 베타 기능은 이 통제 주변의 빈틈을 메운다. 보안 센터는 채팅, Cowork, Claude Code 설정이 Anthropic 권장값과 얼마나 다른지 Owner에게 보여 준다. 자동으로 확인할 수 없는 통제는 확인서(attestation)로 기록하고, 감사인에게 넘길 PDF도 내보낸다. 다만 보안 센터 페이지는 스스로를 "보장이 아니라 안내(guidance, not a guarantee)"라고 밝힌다 [6]. 중앙 관리는 여러 조직을 admin.claude.com의 상위 콘솔 하나 아래에 두며, 한 번 설정하면 되돌릴 수 없다 [1].

퇴사자 처리와 사고 대응에 쓰도록 Admin API는 이제 POST /v1/organizations/users/{user_id}/sign_out와 admin-user-sign-out-2026-10-08 베타 헤더로 구성원을 모든 곳에서 로그아웃시킨다. Claude Console은 조직마다 IP 주소나 CIDR 범위를 최대 1,000개까지 허용 목록에 넣을 수 있다 [5]. 로그아웃시켜도 API 키, 이미 돌고 있는 클라우드 세션, 예약된 루틴은 끝나지 않으므로 따로 회수해야 한다 [1].

기기 쪽에서는 Claude Desktop 4.4212.0 이상이 로컬 Cowork 가상 머신 안에 EDR 센서를 설치할 수 있다. 센서는 CrowdStrike, Palo Alto Networks, SentinelOne, Tanium을 포함한 승인 공급사 7곳의 제품이어야 하고, 가상 머신이 시작될 때마다 패키지 서명을 확인한 뒤 설치한다 [7]. 클라우드에서 도는 Cowork 세션은 대상에서 빠진다. 센서는 탐지 모드로 돌아서 활동을 보고만 하고 막지는 않는다 [1].

한계와 남은 질문은?

추론 훅은 허용과 거부만 할 수 있다. 프롬프트를 가리거나(redact) 고쳐 쓸 수 없고, 문서 스크린숏처럼 이미지로만 된 콘텐츠는 검사하지 않는다 [2]. 엔드포인트로 아예 오지 않는 모델 호출도 있다. 호스팅된 Claude Security 스캔, GitHub 풀 리퀘스트에서 도는 Code Review, 스마트 리포트가 여기에 속한다.

거부된 메시지는 대화 기록에 남고, 대화 기록은 이후 메시지를 보낼 때마다 다시 전송된다. 그래서 대화 기록 전체를 검사하는 서버는 사용자가 메시지를 고치거나, Claude Code에서 되감거나(rewind), 새 채팅을 시작할 때까지 이후 요청도 계속 거부한다 [2]. 회로 차단기를 작동시키는 실패율이나 지속 시간은 문서에 공개돼 있지 않다. 정해진 숫자에 기대기보다 모니터링으로 대비하는 편이 좋다 [3].

자주 묻는 질문

Claude Enterprise의 추론 훅은 무엇인가?

Claude Enterprise 제품에서 오가는 관리 대상 프롬프트와, 선택하면 툴 호출 묶음까지 조직이나 조직의 공급사가 운영하는 HTTPS AI 보안 서버로 보내는 기능이다. Claude는 허용 또는 거부 판정을 기다리고, 거부된 요청은 모델에 닿지 않는다.

추론 훅은 어떤 Claude 제품에 적용되나?

훅 하나로 claude.ai, Cowork, Claude Code, Claude for Microsoft 365, Claude Tag, Claude in Chrome을 모두 관리하며, 웹과 데스크톱, 모바일, CLI, Slack 어디서 쓰든 똑같이 적용된다. 다만 Amazon Bedrock이나 Google Cloud에서는 쓸 수 없고, Claude Platform으로 API를 쓰는 조직도 적용 대상에서 빠진다.

추론 훅 서버가 멈추거나 제한 시간을 넘기면 어떻게 되나?

조직의 실패 처리 설정이 정한다. Block the request는 실패 시 요청을 막고, Allow the request는 실패 시 요청을 통과시키며 처음 저장할 때의 기본값이다. 실패가 계속되면 회로 차단기가 작동하고, Anthropic은 작동 10분 뒤부터 백그라운드에서 복구 여부를 확인한다.

추론 훅으로 프롬프트의 민감한 정보를 가릴 수 있나?

가릴 수 없다. 판정은 허용과 거부뿐이라 훅이 프롬프트를 고쳐 쓰거나 일부를 가릴 수 없다. 파일과 이미지의 원본 바이트도 보내지 않으므로, 문서 스크린숏처럼 이미지로만 된 콘텐츠는 검사하지 않는다.

추론 훅은 누가 설정할 수 있나?

추론 훅을 설정하려면 claude.ai에서 organization:manage 권한이 있어야 하고, 이 권한은 Owner와 Primary owner 역할에만 있다. Admin 역할로는 설정할 수 없다.

출처

  1. More visibility and control over Claude Enterprise for security teams — Anthropic, 확인한 날
  2. Inference hooks — Anthropic (Claude Platform Docs), 확인한 날
  3. Configure Inference hooks — Anthropic (Claude Platform Docs), 확인한 날
  4. Develop an Inference hooks integration — Anthropic (Claude Platform Docs), 확인한 날
  5. Claude Platform release notes — Anthropic (Claude Platform Docs), 확인한 날
  6. Review your organization's security posture with the security center — Anthropic (Claude Help Center), 확인한 날
  7. Run your endpoint detection and response (EDR) sensor in Claude Cowork on Claude Desktop — Anthropic (Claude Help Center), 확인한 날