AI 에이전트는 GUI를 읽지 않습니다. 명령을 실행하고, 표준 출력으로 반환되는 내용을 읽고, 종료 코드를 확인한 다음 다음에 무엇을 할지 결정합니다. 이 루프는 호출하는 도구가 예측 가능하게 작동할 때만 작동합니다. 사람을 위해 화려한 표를 출력하거나, "확실합니까? (y/n)"라고 묻거나, 작업 성공 여부와 관계없이 0을 종료하는 도구는 디버그하기 어려운 방식으로 에이전트를 망가뜨릴 수 있습니다.
따라서 흥미로운 질문은 "어떤 CLI가 가장 강력한가"가 아닙니다. "에이전트가 출력을 기반으로 행동할 수 있도록 어떤 CLI가 구성되어 있는가"입니다. 이는 산문 대신 구조화된 JSON, 프롬프트에서 절대 멈추지 않는 비대화형 모드, 그리고 에이전트가 분기할 수 있는 종료 코드를 의미합니다.
이 목록은 두 가지 버킷으로 나뉩니다. 첫째, 에이전트 런타임: Claude Code, Codex CLI, Gemini CLI, Cursor CLI처럼 에이전트 자체인 코딩 CLI입니다. 둘째, 에이이전트가 손처럼 사용하는 도구: gh, ripgrep, jq, HTTPie, 그리고 구조화된 JSON과 다음 단계 힌트가 내장된 기계 호출자를 위해 제작된 apidog-cli입니다. API 워크플로에 에이전트를 연결하려면 Apidog CLI 전체 가이드에서 전체 설정을 안내합니다. 각 도구에 대한 실제 설치 명령과 작동하는 예제, 그리고 각 도구의 단점에 대한 솔직한 설명을 얻을 수 있습니다.
AI 에이전트에 좋은 CLI 도구의 조건
세 가지 특성이 에이전트 친화적인 CLI를 다른 것들과 구별합니다.
구조화된 출력. 에이전트는 포맷된 표를 파싱하는 것보다 JSON을 훨씬 더 안정적으로 파싱합니다. --json 또는 --output-format json 옵션을 제공하는 도구는 에이전트가 열 위치를 추측하는 대신 이름으로 필드를 읽을 수 있도록 합니다.
비대화형 모드. 명령이 질문을 하기 위해 멈추면, 헤드리스로 실행되는 에이전트는 영원히 멈출 것입니다. 에이전트에 적합한 CLI는 전체 요청을 한 번에 받고 절대 멈추지 않는 출력 또는 실행 모드를 가지고 있습니다.
결정론적인 종료 코드. 성공 시 0, 실패 시 0이 아닌 값을 일관되게 반환합니다. 이 단일 숫자는 에이전트가 계속 진행할지 또는 재시도할지 아는 방법입니다. 작업이 실패했음에도 0으로 종료되는 도구는 함정입니다.
에이전트에게 다음에 무엇을 해야 할지 알려주는 도구에는 보너스 점수가 있습니다. 이는 드문 일이며, apidog-cli가 돋보이는 지점입니다.
Claude Code
Claude Code는 Anthropic의 터미널에서 실행되는 코딩 에이전트입니다. 어떤 명령에도 -p (출력 모드)를 추가하면 전체 에이전트 루프가 비대화형으로 실행되고 결과를 출력한 다음 종료됩니다. 터미널 UI도, 클릭할 것도 없습니다.
npm install -g @anthropic-ai/claude-code
claude -p "이 레포에서 실패한 테스트 요약" --output-format json
--output-format json 플래그는 결과, session_id, total_cost_usd를 포함하는 구조화된 페이로드를 반환하여 스크립트 호출자가 호출당 비용을 추적할 수 있도록 합니다. 실시간 이벤트 스트리밍을 위한 stream-json도 있습니다 (--verbose 필요). 입력을 파이프할 수도 있습니다: cat build-error.txt | claude -p '이 오류를 설명'.
최고의 용도: 하나의 에이전트가 계획하고 실행한 다음, 사람(또는 다른 스크립트)에게 기계가 읽을 수 있는 출력을 넘겨주는 다단계 코딩 작업.
솔직한 한계: 유료이며, API 뒤에 있는 폐쇄형 모델이며, 장시간 자율 실행 시 비용이 증가합니다.
Codex CLI
Codex CLI는 OpenAI의 오픈소스 터미널 에이전트입니다. codex exec 서브커맨드 (별칭 codex e)는 비대화형으로 실행하고 결과를 표준 출력으로 스트리밍합니다.
npm install -g @openai/codex
codex exec --json "회원가입 핸들러에 입력 유효성 검사 추가"
--json 플래그는 표준 출력을 JSONL 스트림으로 전환하며, 모든 이벤트(명령 실행, 파일 변경, 에이전트 메시지)는 jq를 통해 파이프할 수 있는 구조화된 객체입니다. 안정적인 필드가 필요한 자동화를 위해 --output-schema는 최종 응답이 제공하는 JSON 스키마를 따르도록 만들며, 이는 작업 요약이나 릴리스 메타데이터에 유용합니다.
최고의 용도: 실행이 끝날 때 타입이 지정되고 스키마가 검증된 출력이 필요한 CI 기반 코드 변경.
솔직한 한계: JSONL 이벤트 스트림은 장황하므로, 필요한 부분만 추출하려면 실제 jq 작업을 해야 합니다. 스키마 제약이 있는 출력은 비교적 새로워 실제 프롬프트에서 테스트해 볼 가치가 있습니다.
Gemini CLI
Gemini CLI는 Google의 오픈소스 터미널 에이전트입니다. 비TTY 환경에서 또는 -p / --prompt로 프롬프트를 전달할 때 자동으로 헤드리스 모드로 전환됩니다.
npm install -g @google/gemini-cli
gemini --non-interactive --output-format json -p "이 서비스의 공개 엔드포인트 나열"
--output-format json 플래그는 응답 및 사용량 통계와 함께 단일 JSON 객체를 반환합니다. 스트리밍 이벤트를 위한 JSONL 변형도 있습니다. --non-interactive 플래그는 프롬프트에 절대 멈추지 않음을 보장하며, 이는 파이프라인 내부에서 정확히 필요한 것입니다. jq와 함께 사용하여 response 필드를 깔끔하게 추출합니다.
최고의 용도: 이미 Google 도구 환경에 있는 에이전트, 그리고 코드베이스 요약 또는 검사와 같은 읽기 중심 작업.
솔직한 한계: 구조화된 JSON 출력은 일부 경쟁자들보다 늦게 도입되었으므로, 버전 고정 및 플래그가 문서화된 대로 작동하는지 확인한 후 의존해야 합니다.
Cursor CLI
Cursor의 cursor-agent는 편집기와 완전히 분리된 코딩 에이전트를 터미널로 가져옵니다. -p / --print를 사용하여 대화형 UI 없이 헤드리스로 실행합니다: 프롬프트 입력, 결과 출력.
curl https://cursor.com/install -fsS | bash
cursor-agent -p "utils/date.js를 date-fns를 사용하도록 리팩토링" --output-format json
--output-format 옵션은 text, json 또는 stream-json을 취합니다. json 형식은 실행 완료 시 단일 객체를 내보내며, 도구 이벤트는 통합되고 텍스트는 최종 결과로 집계됩니다. 헤드리스 환경에서는 에이전트가 묻지 않고 쓰기 및 셸 도구를 사용할 수 있도록 --trust 옵션이 필요합니다.
최고의 용도: CI 및 git 훅에서 편집기에서 사용하는 것과 동일한 에이전트를 사용하려는 Cursor 표준화 팀.
솔직한 한계: 커뮤니티는 일부 빌드 및 플랫폼에서 헤드리스 -p 모드가 멈추는 현상을 보고했으므로, 대상 OS에서 테스트하고 잘 알려진 버전을 고정해야 합니다. 최소 권한 토큰을 유지하고 변경 사항을 검토하십시오.
gh (GitHub CLI)
gh는 작업이 레포, 이슈, PR 또는 릴리스와 관련될 때 에이전트가 사용하는 도구입니다. --json 플래그가 여기에 포함된 이유입니다.
brew install gh
gh pr list --json number,title,author --jq '.[].author.login'
--json에 필드 이름 목록을 전달하면 정확히 해당 필드를 JSON으로 얻습니다. 값을 생략하면 사용 가능한 필드를 출력하여 에이전트가 스키마를 찾을 수 있습니다. 내장된 --jq 플래그는 jq를 별도로 설치할 필요 없이 해당 출력을 필터링합니다. 그리고 gh가 출력이 파이프되는 것을 감지하면, 자동으로 사람을 위한 포맷팅 대신 탭으로 구분된 기계 출력을 제공합니다. 서브커맨드로 다루지 않는 모든 것에 대해 gh api는 모든 REST 또는 GraphQL 호출을 실행하고 디코딩된 JSON을 반환합니다.
최고의 용도: PR 상태 읽기부터 이슈 생성까지 에이전트 워크플로의 모든 GitHub 작업.
솔직한 한계: GitHub 전용이며, --json에 사용할 수 있는 필드 이름은 서브커맨드마다 다르므로 에이전트는 명령별로 확인해야 합니다.
ripgrep
ripgrep (rg)은 에이전트가 코드베이스에서 빠르게 무언가를 찾는 방법입니다. 에이전트 관련 플래그는 --json으로, 일반적인 grep 스타일 라인 대신 구조화된 매치 이벤트를 출력합니다.
brew install ripgrep
rg --json "TODO" src/ | jq 'select(.type=="match") | .data.path.text'
각 매치는 시작/종료 및 요약 이벤트와 함께 파일 경로, 줄 번호, 매치된 텍스트를 타입이 지정된 필드로 포함하는 별도의 JSON 객체로 출력됩니다. 이는 file:line:text 문자열을 분할하는 것보다 에이전트에게 훨씬 안전합니다. 후자는 콜론이 포함된 경로 또는 코드에서 문제가 발생할 수 있습니다.
최고의 용도: 에이전트가 무엇을 편집할지 결정하기 전에 대규모 레포에서 빠르고 구조화된 코드 검색.
솔직한 한계: --json 출력은 장황하며 유용하려면 jq가 필요합니다. 빠른 일회성 검색에는 일반 텍스트 모드가 더 간단합니다.
jq
jq는 접착제입니다. 위에 나열된 거의 모든 도구는 JSON을 출력하며, jq는 에이전트가 행동하기 전에 이를 슬라이스하고 필터링하며 재구성하는 방법입니다. 한 가지를 매우 잘하는 작고 단일 목적의 바이너리입니다.
brew install jq
curl -s https://api.github.com/repos/cli/cli | jq '{name, stars: .stargazers_count}'
jq는 결정론적이고 스트리밍 방식이므로 에이전트의 셸 파이프라인에 깔끔하게 들어맞습니다: 한 도구에서 JSON을 가져와 에이전트가 필요로 하는 두 필드를 추출하여 다음 명령에 공급합니다. 파싱 오류 시 0이 아닌 값을 종료하므로, 깨진 업스트림 응답이 조용히 전달되지 않고 표면으로 드러납니다.
최고의 용도: 어떤 도구의 JSON이든 에이전트의 다음 단계가 예상하는 형태로 변환하는 것.
솔직한 한계: 쿼리 언어는 학습 곡선이 있으며, JSON만 처리하므로 원시 로그에 직접 사용하기보다는 위에 나열된 도구와 함께 사용하는 것이 좋습니다.
HTTPie
에이전트가 HTTP API를 직접 호출해야 할 때, HTTPie (http)는 순수 curl보다 친숙합니다. 기본적으로 JSON을 사용합니다: 명령줄의 필드는 JSON 요청 본문이 되고, 응답은 자동으로 파싱됩니다.
brew install httpie
http --print=b POST httpbin.org/post name=apidog role=cli
--print 플래그는 표준 출력에 무엇이 출력될지 정확히 제어하며 (본문만인 경우 b), 에이전트가 헤더를 먼저 제거하지 않고 응답을 파싱하려 할 때 중요합니다. 요청 필드가 key=value 쌍이므로, 에이전트는 JSON 문자열을 직접 조립하지 않고도 프로그래밍 방식으로 요청을 구축할 수 있습니다. curl은 더 보편적인 대안이지만, HTTPie의 JSON 우선 기본값은 에이전트가 다루기 더 쉽습니다.
최고의 용도: JSON 입출력이 표준인 빠르고 스크립트 가능한 일회성 API 호출.
솔직한 한계: curl은 이미 어디에나 있지만, HTTPie는 추가적인 의존성입니다. 스트리밍 또는 이국적인 프로토콜의 경우 여전히 curl이 우세합니다.
apidog-cli
이 목록의 대부분의 도구는 사람을 위해 만들어졌다가 나중에 --json 플래그를 추가했습니다. apidog-cli는 다릅니다: 설계상 출력이 구조화된 JSON이며, 응답에 agentHints.nextSteps를 포함하여 한 단계 더 나아갑니다. 이 도구는 호출 에이전트에게 다음에 무엇을 할 수 있는지 문자 그대로 알려줍니다. 이는 다른 CLI에는 없는 속성입니다.
단순한 테스트 러너가 아니라 완전한 API 프로젝트 CLI입니다. 하나의 바이너리가 엔드포인트, 스키마 (데이터 모델), 모의(mock), 환경, 가져오기 및 내보내기, 문서, 테스트 시나리오, 브랜치를 관리합니다. 설치하고 인증합니다:
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog run --help
여기서 중요한 에이전트 친화적인 속성: apidog run은 모든 테스트가 통과하면 0을 종료하고, 실패하면 0이 아닌 값을 종료하므로, 에이전트는 출력을 전혀 파싱할 필요 없이 종료 코드에 따라 분기합니다. JSON 응답은 다음 단계 힌트를 포함하므로, 워크플로를 조정하는 에이전트는 사람이 시퀀스를 매핑할 필요 없이 명령을 연결할 수 있습니다. 이것이 이 도구가 에이전트 시리즈 전반에 걸쳐 나타나는 이유입니다: Claude Code의 Apidog CLI, Codex의 Apidog CLI, 그리고 Cursor의 Apidog CLI 모두 동일한 구조화된 출력에 의존합니다.
언급할 가치가 있는 또 다른 에이전트 안전 기능이 있습니다. 라이브 API 프로젝트에 쓰기 권한이 있는 에이전트는 실제 엔드포인트 및 스키마를 덮어쓰거나 삭제할 수 있습니다. Apidog의 AI 브랜치 (apidog branch --type ai)는 에이전트에게 편집할 격리된 브랜치를 제공합니다. 소스 브랜치는 변경되지 않으며, 병합 요청을 승인하기 전까지는 아무것도 반영되지 않습니다. 전체 패턴은 AI 에이전트를 위한 AI 브랜치를 참조하고, 파이프라인에 어떻게 적용되는지는 AI 에이전트 테스트 하네스 구축 및 AI 에이전트 워크플로의 Apidog CLI를 참조하십시오.
최고의 용도: 에이전트에게 전체 API 라이프사이클을 위한 단일, JSON-네이티브 도구를 제공하며, 힌트와 안전한 편집 샌드박스가 내장되어 있습니다.
솔직한 한계: Apidog는 오픈소스가 아닙니다. 무료 티어가 있는 상용 제품이므로, jq나 ripgrep과 같은 단일 목적의 MIT 바이너리와는 다른 종류의 선택입니다. 그리고 OpenAPI 린터가 없으므로, 스타일 적용이 워크플로의 일부라면 Spectral 또는 Redocly와 함께 사용하는 것이 좋습니다.
선택 방법
단일 승자는 없습니다. 런타임은 에이전트이고, 도구는 에이전트가 사용하는 것입니다. 작업에 맞는 도구를 선택하세요.
| 도구 | 최고의 용도 | 설치 | 오픈소스? | 에이전트 적합성 참고 |
|---|---|---|---|---|
| Claude Code | 다단계 코딩, 계획 | npm i -g @anthropic-ai/claude-code |
아니요 | -p + --output-format json, 출력에 비용 포함 |
| Codex CLI | 스키마 타입 CI 코드 변경 | npm i -g @openai/codex |
예 | codex exec --json, --output-schema |
| Gemini CLI | Google 스택, 읽기 중심 작업 | npm i -g @google/gemini-cli |
예 | --non-interactive --output-format json |
| Cursor CLI | Cursor 팀, 편집기-CI 패리티 | curl cursor.com/install | bash |
아니요 | -p --output-format json, 헤드리스 테스트 |
| gh | 모든 GitHub 작업 | brew install gh |
예 | --json 필드 + 내장 --jq |
| ripgrep | 빠른 구조화된 코드 검색 | brew install ripgrep |
예 | --json 타입 매치 이벤트 |
| jq | 모든 도구의 JSON 재구성 | brew install jq |
예 | 결정론적, 파이프라인 접착제 |
| HTTPie | 스크립트 가능한 JSON API 호출 | brew install httpie |
예 | JSON 우선, --print 제어 |
| apidog-cli | 에이전트를 위한 전체 API 라이프사이클 | npm i -g apidog-cli |
아니요 (무료 티어) | 네이티브 JSON + agentHints.nextSteps |
작업을 구동할 하나의 런타임을 선택한 다음, 소규모 도구 CLI 키트를 제공하십시오. API와 관련된 모든 것에 대해, 솔직한 제안은 curl, 모의 서버, 테스트 러너를 함께 연결하는 것이 작동하지만, 다음 단계를 이미 알고 있는 JSON 네이티브 CLI는 많은 접착 코드(glue code)를 제거한다는 것입니다.
마무리
에이전트 적합성은 마케팅 용어가 아닙니다. 세 가지 구체적인 속성을 의미합니다. 에이전트가 파싱할 수 있는 구조화된 출력, 절대 멈추지 않는 비대화형 모드, 그리고 분기할 수 있는 종료 코드입니다. 런타임(Claude Code, Codex CLI, Gemini CLI, Cursor CLI)은 추론을 제공하고, 도구 CLI(gh, ripgrep, jq, HTTPie, apidog-cli)는 작업을 수행합니다.
apidog-cli는 다른 도구들이 끝나는 지점에서 시작함으로써 그 자리를 차지합니다: 기본적으로 JSON, 신뢰할 수 있는 종료 코드, 에이전트가 직접 읽는 다음 단계 힌트. 에이전트의 작업이 API와 관련이 있다면, Apidog를 다운로드하고 CLI를 사용해 보거나 Apidog CLI 전체 가이드로 시작하십시오. 다음으로 CI에 연결하십시오. 에이전트 네이티브 출력이 진가를 발휘하는 곳입니다.
