숨은 팁잘 안 알려진 기능

헤드리스 모드 (-p)

UI 없이 한 번 실행하고 결과만 출력합니다.

claude -p는 대화창 없이 프롬프트를 한 번 실행하고 결과만 출력합니다. 스크립트, CI, 파이프라인에 Claude를 끼울 때 씁니다. 같은 기능이 Agent SDK로도 제공됩니다.

기본 사용

아무 claude 명령에 -p(또는 --print)를 붙이면 비대화형으로 실행됩니다. 성공하면 종료 코드 0, 실패하면 0이 아닌 값으로 끝나서 스크립트가 분기할 수 있습니다.

표준 입력을 읽기 때문에 다른 명령의 출력을 파이프로 넘길 수 있습니다. 파이프 입력은 10MB까지입니다.

claude -p "auth 모듈이 하는 일을 설명해줘"

cat build-error.txt | claude -p "빌드 오류의 근본 원인을 간단히 설명해줘" > output.txt

출력 형식

  • text(기본): 일반 텍스트.
  • json: 결과, 세션 ID, 메타데이터가 든 JSON. 텍스트 결과는 result 필드에 있고 total_cost_usd로 비용 추정치도 나옵니다(청구액과 다를 수 있음).
  • stream-json: 줄 단위 JSON. 실시간 처리용이며 --verbose, --include-partial-messages와 함께 씁니다.
  • --json-schema를 함께 주면 스키마에 맞는 결과가 structured_output 필드에 담깁니다. 쓰기 전에 필드가 있는지 확인하세요.
claude -p "이 프로젝트를 요약해줘" --output-format json | jq -r ".result"

권한과 이어가기

비대화형이라 승인 질문에 답할 사람이 없습니다. --allowedTools로 미리 허용할 도구를 정합니다. Bash(git diff *)처럼 뒤에 공백과 *를 붙이면 그 접두어로 시작하는 명령만 허용합니다. 공백이 없으면 git diff-index까지 맞으니 주의하세요.

--permission-mode로 기본 방식(auto, dontAsk, acceptEdits)을 정할 수도 있습니다. 문서에 따르면 v2.1.302부터는 아무 설정이 없을 때 -p가 Manual 모드로 시작하고, 승인이 필요한 호출은 거부됩니다.

이전 대화는 --continue로 이어가거나, JSON 출력에서 session_id를 얻어 --resume으로 지정해 이어갑니다.

claude -p "테스트를 돌리고 실패를 고쳐줘" --allowedTools "Bash,Read,Edit"

claude -p "성능 문제를 점검해줘"
claude -p "DB 쿼리에 집중해줘" --continue

CI에서는 --bare

--bare를 붙이면 훅, 스킬, 플러그인, MCP 서버, 자동 메모리, CLAUDE.md의 자동 탐색을 건너뜁니다. 시작이 빨라지고 어느 컴퓨터에서나 같은 결과를 내기 쉽습니다. 이 모드는 구독 로그인을 쓰지 않으므로 ANTHROPIC_API_KEY가 필요합니다. 공식 문서는 스크립트용으로 --bare를 권장하며 앞으로 -p의 기본값이 될 예정이라고 합니다.

--bare 없이 실행하면 프로젝트의 .claude/settings.json 훅과 .mcp.json 서버가 신뢰 확인 없이 로드됩니다. 모르는 저장소에서 쓸 때는 특히 조심하세요.

/schedule, /loop과의 차이

-p는 지금 한 번 실행하는 방법이고, 언제 실행할지는 정하지 않습니다. 정해진 시각에 돌리려면 cron이나 GitHub Actions에서 -p를 호출하거나 클라우드 예약 작업(/schedule)을 씁니다. 대화형 터미널 전용 명령(/login 등)은 -p에서 쓸 수 없습니다.

실제 예시

PR 전에 변경분에서 오타만 찾고 싶을 때

git diff main | claude -p "오타 린터로 동작해. 오타마다 파일:줄 한 줄과 문제 한 줄만 출력해. 다른 말은 하지 마."

파이프로 넘긴 diff를 읽고 오타를 보고합니다. diff를 파이프로 넘기므로 Claude에게 git을 실행할 Bash 권한을 줄 필요가 없습니다. 이 방식은 문서의 package.json 스크립트 예시와 같은 구조입니다.

스크립트에서 결과를 JSON으로 받아 후처리할 때

claude -p "auth.py의 주요 함수 이름을 뽑아줘" --output-format json --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' | jq ".structured_output"

스키마에 맞는 JSON이 structured_output에 담겨 나오고, jq로 그 부분만 꺼냅니다. Claude가 요청을 거절한 경우처럼 유효한 결과가 없으면 이 필드가 없을 수 있습니다.

흔한 실수와 쓰지 말아야 할 때

  • --allowedTools 없이 Bash나 편집이 필요한 작업을 시키면 승인이 없어 호출이 거부된 채 끝날 수 있습니다.
  • --allowedTools에 Bash 전체를 허용하면 어떤 셸 명령이든 실행됩니다. 가능한 한 Bash(git diff *)처럼 좁게 적으세요.
  • --bare는 구독 로그인을 쓰지 않으므로, 키가 없으면 인증 실패로 끝납니다.
  • --bare 없이 CI에서 돌리면 호스트의 훅과 플러그인 때문에 결과가 환경마다 달라질 수 있습니다.
  • SIGTERM으로 멈추면 종료 코드 143이고 그 턴의 결과는 기록되지 않습니다.

자주 묻는 질문

이름이 왜 헤드리스인가요?

화면(대화 UI) 없이 돈다는 뜻입니다. 공식 문서는 이를 Claude Code를 프로그램으로 실행하는 방식(Agent SDK의 CLI 형태)으로 설명합니다.

-p에서 플러그인 명령을 쓸 수 있나요?

/plugin 자체는 동작하지 않습니다. 이미 설치한 플러그인은 로드됩니다. 설치와 관리는 셸의 claude plugin 명령으로 합니다.

비용을 알 수 있나요?

--output-format json의 total_cost_usd로 추정치를 볼 수 있습니다. 클라이언트 쪽 추정치라 실제 청구와 다를 수 있습니다.

2026-10-30 공식 문서와 대조함. 출처: Claude Code 문서: Run Claude Code programmatically, Claude Code 문서: Install and manage plugins. 작성 원칙

사용법

claude -p "타입 오류 점검" --output-format json

어디에 입력하나요

대부분 터미널에서 claude 를 실행할 때 붙이는 옵션이거나, 프로젝트 폴더에 두는 설정 파일입니다. 사용법 상자의 내용을 그대로 따라 하면 됩니다.

Claude Code를 처음 써본다면

터미널(맥은 "터미널" 앱, 윈도우는 "PowerShell")에서 작업할 폴더로 이동한 뒤 claude 를 입력하면 시작됩니다. VS Code나 JetBrains를 쓰면 확장 프로그램으로, 터미널이 낯설면 Claude 데스크톱 앱의 Code 탭으로도 열 수 있습니다.

  1. Claude Pro 이상 유료 플랜이나 Anthropic API 키가 필요합니다. 무료 계정으로는 쓸 수 없습니다.
  2. 공식 설치 안내의 명령어 한 줄을 터미널에 붙여넣어 설치합니다.
  3. 처음 실행하면 브라우저가 열리고 Claude 계정으로 로그인합니다.
  4. 입력창이 뜨면 할 일을 한국어로 적으면 됩니다. / 를 치면 명령어 목록이 뜹니다.
Claude Code 공식 설치 안내

언제 쓰나

CI나 스크립트에서 쓸 때.

함께 보면 좋은 것

--barehooks, 스킬, 플러그인, MCP, CLAUDE.md 자동 탐색을 끄고 가볍게 실행합니다.Claude Code숨은 팁

Claude Code의 다른 숨은 팁

커스텀 슬래시 명령 (.claude/commands)마크다운 파일 하나가 /이름 명령이 됩니다.숨은 팁Hooks (settings.json)도구 실행 전후 같은 이벤트에 맞춰 명령을 자동으로 실행합니다.숨은 팁--continue / -c현재 폴더의 가장 최근 대화를 이어갑니다.숨은 팁--resume / -r세션을 ID나 이름으로 이어갑니다.숨은 팁--fork-session이어받되 새 세션 ID로 갈라냅니다.숨은 팁--worktree / -w격리된 git worktree에서 Claude를 실행합니다.숨은 팁
Claude Code 전체