AI·테크 · 2026.05.14 · 약 8분

클로드 코드 API 사용법 — Agent SDK로 직접 박는 길

같은 도구·같은 루프·같은 컨텍스트 관리를 라이브러리로 노출한 것이 Agent SDK다.
터미널에서 손으로 치는 대신 코드에서 부른다.
2개 공식 언어
Python·TypeScript
10여 종 기본 제공 도구
설치 직후 사용
0줄 직접 짤 툴 루프
SDK가 처리

클로드 코드(Claude Code)를 가장 많이 쓰는 입구는 터미널 CLI(claude)다. 하지만 CLI만 있는 게 아니다. 같은 엔진을 Python·TypeScript 라이브러리로 부르는 길이 따로 있다. Claude Agent SDK다.

이 글은 Agent SDK를 처음 박는 사람을 위한 한 페이지 정리다. 설치 한 줄, 인증 한 줄, 호출 한 함수에서 시작해 도구 권한·훅·세션·MCP·서브에이전트까지 차례로 짚는다. 결제 경로를 먼저 정해야 한다면 Pro·Max·API 비교 글이 앞 순서다.

1. CLI vs SDK — 같은 엔진, 두 입구

Anthropic 공식 문서는 두 입구의 관계를 이렇게 설명한다. CLI와 Agent SDK는 같은 기능을 다른 인터페이스로 노출한 것이다. CLI는 사람이 손으로 치는 대화형 환경에 최적화돼 있고, SDK는 코드에서 호출하는 자동화·통합 환경에 최적화돼 있다. 둘 사이의 작업 흐름은 직접 번역된다.

실무에서는 다음 표가 거의 그대로 들어맞는다.

상황
권장 입구
개발 중 인터랙티브 작업
CLI
CI/CD 파이프라인
SDK
자사 서비스 안에 박는 커스텀 에이전트
SDK
한 번 돌리는 일회성 작업
CLI
상시 운영되는 자동화
SDK

한 가지 더 짚고 가야 할 차이가 있다. Anthropic Client SDK라는 라이브러리가 따로 존재한다. 이건 메시지 API에 직접 붙는 SDK다. Agent SDK와 헷갈리지 말아야 한다. Client SDK는 툴 호출이 들어오면 그 실행을 사용자가 직접 짜야 한다. Agent SDK는 그 루프를 Claude가 알아서 돌린다. Read·Write·Bash 같은 도구는 라이브러리 안에서 이미 구현돼 있다.

Client SDK는 메시지 API에 직접 붙는 것, Agent SDK는 Claude Code의 도구·루프·컨텍스트 관리를 라이브러리로 노출한 것. 이름이 비슷해서 혼동되지만 다른 물건이다.

2. 두 줄 설치 — Python·TypeScript

설치는 한 줄이다. 패키지 매니저만 다르다.

TypeScript
npm
npm install @anthropic-ai/claude-agent-sdk
TypeScript SDK는 플랫폼별 Claude Code 네이티브 바이너리를 옵션 의존성으로 함께 가져온다. 별도로 CLI를 깔지 않아도 된다.
Python
pip
pip install claude-agent-sdk
Python SDK는 비동기(asyncio) 기반. async for로 메시지 스트림을 받는 패턴이 표준이다.

3. 인증 — ANTHROPIC_API_KEY 한 줄

인증은 환경변수 한 줄로 끝난다. API 키는 platform.claude.com(Claude Console)에서 발급받는다. 콘솔에서 무엇이 보이는지는 대시보드 사용법 글에서 별도로 다룬다.

export ANTHROPIC_API_KEY=sk-ant-...

키 하나만 있으면 SDK가 알아서 인증한다. 클라우드 환경에서 돌릴 때는 사이드 옵션이 두 가지 있다. AWS Bedrock(CLAUDE_CODE_USE_BEDROCK=1), Google Vertex AI(CLAUDE_CODE_USE_VERTEX=1), Azure Foundry(CLAUDE_CODE_USE_FOUNDRY=1)로 각각 가입돼 있다면 환경변수 하나만 더 켜면 그쪽 자격증명을 따라간다. 1인 개발자는 거의 쓸 일이 없고, 회사가 이미 그쪽 클라우드 결제 계정을 가지고 있을 때 의미가 생긴다.

구독자 주의: 2026년 6월 15일부터 Pro/Max 구독자가 Agent SDK 또는 claude -p 헤드리스 모드를 쓰면 인터랙티브 한도와 별도로 새로 신설되는 월간 Agent SDK 크레딧에서 차감된다. CLI 대화형 사용분과 합산되지 않는 별도 통장이라고 보면 된다.

4. 첫 호출 — query() 안에서 일어나는 일

Agent SDK의 진입점은 query() 함수 하나다. 프롬프트와 옵션을 넘기면 비동기 이터레이터를 돌려준다. 그 이터레이터에서 메시지가 흘러나오는 동안 Claude가 도구를 호출하고 결과를 받고 다음 행동을 결정한다 — 그 루프를 SDK가 내부에서 굴린다.

Python — 디렉토리 파일 나열 에이전트
import asyncio from claude_agent_sdk import query, ClaudeAgentOptions async def main(): async for message in query( prompt="What files are in this directory?", options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]), ): if hasattr(message, "result"): print(message.result) asyncio.run(main())
TypeScript — 같은 작업
import { query } from "@anthropic-ai/claude-agent-sdk"; for await (const message of query({ prompt: "What files are in this directory?", options: { allowedTools: ["Bash", "Glob"] } })) { if ("result" in message) console.log(message.result); }

두 언어 모두 같은 모양을 띤다. 프롬프트 한 줄, 허용 도구 목록 하나. result 필드가 있는 메시지가 최종 응답이고, 그 전 메시지들은 도구 호출·결과 같은 중간 단계다. 디버깅할 때는 모든 메시지를 찍어보면 SDK 내부에서 무슨 일이 벌어지는지 그대로 보인다.

5. 도구 권한 — allowed_tools와 permission_mode

Agent SDK가 기본으로 제공하는 도구는 10여 종이다. 각자 분명한 책임이 있고 권한 범위가 갈린다.

도구
하는 일
위험도
Read·Glob·Grep
읽기 전용 — 파일·검색
낮음
Write·Edit
파일 생성·수정
중간
Bash·Monitor
쉘 실행·백그라운드 모니터링
높음
WebSearch·WebFetch
웹 검색·페이지 본문 가져오기
중간
AskUserQuestion
사용자 객관식 질문
낮음

권한 제어는 두 축으로 한다. allowed_tools는 화이트리스트 — 여기 들어간 도구만 사용 가능. permission_mode는 사용 방식 — acceptEdits를 켜면 파일 수정에 사용자 확인 없이 진행하고, 기본 모드는 매번 확인을 요구한다. 코드 리뷰 같은 읽기 전용 작업은 allowed_tools=["Read","Glob","Grep"]만 주면 다른 위험한 행동을 아예 봉쇄할 수 있다.

6. 훅 — 도구 호출 전후에 코드 끼우기

훅(Hooks)은 에이전트의 생애 주기 안 특정 시점에 사용자 코드를 끼워 넣는 메커니즘이다. 검증·로깅·차단·변환 — 어떤 용도로도 쓸 수 있다. 주요 훅은 다음과 같다.

PreToolUse
도구가 실행되기 직전. 인자 검증, 사전 차단, 외부 승인 절차 트리거.
PostToolUse
도구 실행 직후. 감사 로그 기록, 결과 변환, 다음 도구에 넘기기 전 후처리.
UserPromptSubmit
사용자 입력이 모델에 들어가기 전. 민감 정보 마스킹, 정책 문구 주입.
SessionStart·SessionEnd
세션 시작·종료 시점. 환경 준비, 임시 자원 정리.
Stop
에이전트 종료 직전. 결과 검증 후 강제 재실행 같은 컨트롤.

훅의 가장 흔한 용도는 감사(audit). 모든 파일 수정이 별도 로그 파일에 추적되도록 PostToolUseEdit|Write 매처를 걸어두면 누가 무엇을 언제 바꿨는지 코드 한 줄 없이 기록된다. 보안·규정 요구가 있는 환경에서 SDK를 들이밀 때 첫 번째로 짓는 안전장치다.

7. MCP·서브에이전트 — 외부 시스템과 분업

SDK는 단독으로 닫혀 있지 않다. 두 가지 확장 경로가 있다.

MCP(Model Context Protocol)는 외부 시스템을 도구로 붙이는 표준이다. 데이터베이스, 브라우저, Slack, Jira, 자체 사내 API — 무엇이든 MCP 서버로 노출하면 에이전트가 그걸 호출할 수 있다. 옵션의 mcp_servers(Python) 또는 mcpServers(TypeScript)에 등록만 하면 끝. Playwright MCP를 박으면 에이전트가 브라우저를 직접 조작하고, Google Drive MCP를 박으면 디자인 문서를 읽어 코드로 번역한다.

서브에이전트(Subagents)는 큰 작업을 작은 전문 에이전트들로 나누는 메커니즘이다. 메인 에이전트가 코드 리뷰어 서브에이전트에 분석을 위임하고, 보안 검토 서브에이전트에 별도로 보안 리뷰를 시키고, 결과를 받아 종합하는 식이다. 각 서브에이전트는 자체 시스템 프롬프트·자체 도구 권한·자체 컨텍스트를 가진다. 메인 에이전트의 컨텍스트가 잡다한 정보로 채워지는 걸 막는 효과가 가장 크다.

서브에이전트는 단순 분업이 아니다 — 메인 에이전트의 컨텍스트를 잡다한 정보로부터 보호하는 장치에 가깝다.

8. 세션 — 컨텍스트를 다음 실행에 넘기기

SDK는 세션을 JSONL 파일로 저장한다. 첫 호출에서 받은 session_id를 다음 호출의 resume 옵션에 넣으면 그 컨텍스트를 통째로 이어받는다. 인증 모듈을 한 번 읽힌 다음, 같은 컨텍스트에서 "그걸 호출하는 모든 곳을 찾아라"라고 시키면 "그것"이 인증 모듈이라는 것을 알고 있다.

여기에서 한 단계 더 나가면 포크(fork)다. 같은 세션에서 두 가지 다른 접근을 동시에 시도해 결과를 비교하는 패턴. 같은 컨텍스트를 두 갈래로 갈라 한쪽은 보수적인 리팩토링, 다른 한쪽은 적극적인 재설계를 시키고 결과를 합쳐서 선택지로 만든다. CI에서 PR 두 개를 동시에 만드는 워크플로가 이 위에 올라간다.

9. CLI 헤드리스 모드 — 파이프와 조합

SDK까지 갈 필요 없이 CLI의 -p 옵션만으로도 자동화의 절반은 끝난다. claude -p "..."는 인터랙티브 모드가 아닌 헤드리스 모드로 한 번 실행하고 결과를 stdout으로 뱉는다. 파이프·스크립트와 조합되는 순간 다음 같은 한 줄짜리 자동화가 만들어진다.

# 최근 로그 200줄을 분석해서 이상 징후 보고 tail -200 app.log | claude -p "이상한 패턴이 있으면 Slack으로 알려" # CI에서 새 문자열 자동 번역 PR claude -p "새로 추가된 영문 문자열을 한국어로 번역하고 PR을 올려" # 보안 리뷰만 받기 git diff main --name-only | claude -p "이 파일들에서 보안 이슈를 찾아"

SDK는 이런 한 줄 자동화를 코드 안에 더 정교하게 박을 때 의미가 생긴다. 결과 메시지를 파싱해서 분기, 도구 권한을 상황별로 다르게 부여, 훅으로 외부 시스템 연동, 세션을 다음 단계로 이어가기 — CLI -p가 닿지 못하는 모든 영역이 SDK다.

Q렌즈의 시각

Agent SDK의 진짜 의미는 "코드에서 부른다"가 아니라 "Claude Code의 안전장치들이 그대로 따라온다"에 가깝다. 권한 화이트리스트, 훅, 세션 분리, 서브에이전트의 컨텍스트 격리 — 이건 한 줄 LLM API 호출을 자동화하는 데 굳이 필요하지 않은 장치들이다. 한 작업이 여러 도구를 자율적으로 부르고, 한 번에 끝나지 않고, 결과를 누군가 책임져야 할 때 필요해진다.

그래서 SDK를 박을 때 결정해야 할 것은 라이브러리 선택이 아니라 운영 모델이다. 권한을 어디까지 줄 것인가, 훅으로 무엇을 기록할 것인가, 세션을 얼마나 오래 살릴 것인가. 이걸 정하지 않은 채 query()를 호출하면 SDK는 그냥 CLI를 라이브러리로 호출하는 도구가 된다. 그 위에 안전장치가 있어야 SDK가 SDK다워진다.

한 가지 더. 2026년 6월 15일부터 구독 플랜에서 Agent SDK와 claude -p가 별도 크레딧으로 분리된다. CLI 대화형 사용분이 자동화 사용분을 잠식하지 않게 됐다는 뜻이지만, 동시에 "구독만 사면 무제한"이 아니라는 의미이기도 하다. 자동화 비중이 큰 팀이라면 분리 이후 첫 한 달 사용량을 보고 결제 경로를 다시 점검하는 게 안전하다.

출처: Claude Agent SDK 공식 문서 — code.claude.com/docs/en/agent-sdk/overview (2026.05 조회) · Claude Code 공식 문서 — code.claude.com/docs/en/overview (2026.05 조회) · Agent SDK 크레딧 분리 공지 — support.claude.com (2026.06.15 발효 예정).