OneCLI – AI Agent를 위한 Credential Vault (Rust 구현)
Show HN: OneCLI – Vault for AI Agents in Rust
TL;DR Highlight
오픈소스 HTTP 게이트웨이가 AI 에이전트의 가짜 API 키를 실제 키로 교체하여 크리덴셜 노출 위험을 줄였으나, 근본적인 보안 한계로 인해 커뮤니티의 날카로운 비판을 받았다.
Who Should Read
AI 에이전트가 여러 외부 API를 호출하는 시스템을 개발 중인 백엔드/인프라 개발자. 특히 에이전트별로 API 키를 관리하다가 키 유출이나 권한 관리에 어려움을 겪고 있는 팀.
Core Mechanics
- OneCLI는 Rust로 만든 오픈소스 HTTP 게이트웨이로, AI 에이전트와 외부 서비스 사이에 위치한다. 에이전트에게는 'FAKE_KEY' 같은 플레이스홀더 키를 주고, 실제 요청이 게이트웨이를 통과할 때 진짜 API 키로 교체(swap)해서 외부로 내보낸다.
- 에이전트는 Proxy-Authorization 헤더에 액세스 토큰을 담아 게이트웨이에 인증하고, 게이트웨이는 AES-256-GCM으로 암호화된 시크릿 저장소에서 해당 자격증명을 꺼내 주입한다. 실제 API 키는 에이전트 코드나 로그 어디에도 노출되지 않는 구조다.
- 시스템은 세 컴포넌트로 구성된다. Rust로 만든 고성능 HTTP 게이트웨이, 에이전트·시크릿·권한을 관리하는 Next.js 웹 대시보드, 그리고 AES-256-GCM으로 암호화된 시크릿 저장소다.
- 설계 목적은 에이전트 수십 개가 각각 다른 API를 호출하는 환경에서, 키를 에이전트별로 하드코딩하지 않고 한 곳에서 관리·교체·감사할 수 있게 하는 것이다. 키 로테이션이나 액세스 로그 추적도 게이트웨이 레벨에서 일괄 처리된다.
- 현재 GitHub 스타 600개 이상을 받았으며, Apache-2.0 라이선스로 공개되어 있다. 리포지토리에는 Claude, GitHub Actions 등과의 통합을 위한 스킬 파일도 포함되어 있다.
- 가짜 키를 사용하는 방식이기 때문에, 기업 내 보안 스캐닝 도구(시크릿 스캐너 등)가 이 가짜 키를 실제 키로 오인해 오탐(false positive)을 발생시킬 수 있다는 실용적인 단점도 지적됐다.
Evidence
- 가장 많이 제기된 근본적 비판은 '가짜 키를 줘도 에이전트가 할 수 있는 일은 달라지지 않는다'는 것이다. 에이전트가 프록시 인증 토큰을 읽을 수 있다면 그 토큰 자체를 탈취당할 수 있고, 설령 키를 못 꺼내더라도 프록시를 통해 API를 자유롭게 호출할 수 있으므로 데이터 삭제·비용 유발·데이터 exfiltration은 여전히 가능하다는 주장이 여럿 나왔다.
- 보안을 제대로 하려면 에이전트 프로세스와 게이트웨이 사이를 mTLS로 연결하고, 에이전트가 접근할 수 없는 사이드카(sidecar) 컨테이너가 TLS 키를 관리해야 한다는 아키텍처 제안이 있었다. airutorg/airut를 직접 구현한 개발자가 실제 경험을 공유했는데, Node.js가 HTTP_PROXY 환경변수를 잘 따르지 않는 점, AWS SigV4 서명을 재구현해야 하는 복잡성, 에이전트가 프록시 프로세스 메모리를 읽을 수 없도록 별도 컨테이너에서 실행해야 하는 점을 배운 점으로 꼽았다.
- 이 문제는 에이전트 전용이 아니라 오래된 auth-proxy 패턴이라는 의견도 있었다. fly.io 팀의 tokenizer(상태 없이 동작하는 DB·대시보드 불필요 솔루션)나 Buzzfeed의 SSO 프록시가 이미 같은 문제를 해결하고 있으며, Hashicorp Vault나 AWS Secrets Manager로도 동일하게 구현 가능하다는 대안이 제시됐다. 실제로 Hashicorp Vault + OpenClaw 조합으로 시간 제한 만료 크리덴셜을 에이전트 스킬 스크립트 안에서 동적으로 가져오는 구성을 사용 중이라는 경험담도 나왔다.
- 실제 에이전트 파이프라인을 운영 중인 팀에서는 '태스크 단위로 단기 파생 토큰(short-lived derived token)을 발급하고, 태스크 완료 시 즉시 폐기하는 계층형 시크릿 모델'을 사용한다고 공유했다. 스케줄 기반이 아닌 태스크 완료 기반 폐기 방식 덕분에 일반 API 키 방식이었으면 발견하지 못했을 오남용 사례 2건을 잡아냈다고 한다.
- TLS 암호화 트래픽을 프록시가 어떻게 수정하는지에 대한 기술적 질문도 있었다. 이에 대해 airutorg 개발자는 MITM 방식의 투명 프록시를 별도 컨테이너에서 운영하고, 에이전트 컨테이너의 인증서 저장소에 프록시 인증서를 주입하는 방식으로 해결했다고 설명했다.
How to Apply
- 에이전트가 OpenAI, Stripe 등 여러 외부 API를 호출하는 구조에서 키 로테이션을 자동화하고 싶다면, OneCLI 게이트웨이를 별도 Docker 컨테이너로 띄우고 에이전트에는 FAKE_KEY만 환경변수로 전달하도록 구성하면 된다. 키 변경 시 에이전트 배포 없이 대시보드에서만 교체할 수 있다.
- 다만 보안 요구 수준이 높다면 에이전트 컨테이너와 게이트웨이 컨테이너를 반드시 분리하고, 에이전트가 게이트웨이 프로세스 메모리에 접근할 수 없도록 네트워크 정책으로 격리해야 한다. 그렇지 않으면 프록시 인증 토큰 자체가 탈취될 수 있다.
- Hashicorp Vault나 AWS Secrets Manager를 이미 사용 중이라면 OneCLI 대신 기존 인프라를 확장하는 것이 더 나을 수 있다. AWS STS 기반의 시간 제한 임시 크리덴셜을 에이전트 스킬 호출 시점에 동적으로 발급하는 방식이 보안 측면에서 더 강력하다.
- Node.js 기반 에이전트를 사용 중이라면, Node.js는 HTTP_PROXY 환경변수를 기본적으로 따르지 않으므로 글로벌 fetch/http 모듈을 프록시 설정으로 패치하는 추가 작업이 필요하다는 점을 사전에 고려해야 한다.
Code Example
# vault_get.sh (Hashicorp Vault에서 시크릿 가져오기 - 댓글에서 언급된 대안)
# 에이전트 스킬 스크립트 내부에서 호출해 LLM 컨텍스트에 키가 노출되지 않게 함
# https://gist.github.com/sathish316/1ca3fe1b124577d1354ee254a...
# OneCLI 사용 시 .env.example 구성 예시
# 에이전트에는 FAKE_KEY만 전달, 실제 키는 OneCLI 대시보드에 저장
OPENAI_API_KEY=FAKE_KEY
STRIPE_SECRET_KEY=FAKE_KEY
# 에이전트 HTTP 호출 시 Proxy-Authorization 헤더 포함
# curl -x http://onecli-gateway:8080 \
# -H 'Proxy-Authorization: Bearer <access-token>' \
# -H 'Authorization: Bearer FAKE_KEY' \
# https://api.openai.com/v1/chat/completions
# 게이트웨이가 FAKE_KEY를 실제 키로 교체 후 외부로 전달Terminology
관련 논문
프로덕션 AI 에이전트를 GPT-5.6으로 마이그레이션: 2.2배 빠르고 27% 저렴
마케팅 웹사이트를 자동 생성하는 프로덕션 AI 에이전트를 Claude Opus 4.8에서 GPT-5.6 Sol로 전환한 실전 경험담으로, 단순 모델 교체가 아니라 eval 하네스, 툴 스키마, 캐싱, 추론 리플레이까지 손봐야 했던 과정을 구체적인 수치와 함께 정리했다.
xAI Grok Build CLI가 xAI 서버로 전송하는 데이터: 네트워크 레벨 분석
xAI의 공식 코딩 CLI 도구 Grok Build가 사용자 동의 없이 전체 Git 저장소와 .env 시크릿 파일을 xAI 서버로 업로드한다는 사실이 네트워크 트래픽 분석으로 밝혀졌다.
중요할 때 기억하라: Long-Horizon 에이전트를 위한 Proactive Memory Agent
LLM 에이전트가 긴 작업 중 중요한 정보를 잊어버리는 문제를 별도의 메모리 에이전트가 '적절한 타이밍에' 끼어들어 해결하는 방법
WebSwarm: 깊고 넓은 웹 검색을 위한 재귀적 Multi-Agent Orchestration
복잡한 웹 검색을 재귀적으로 분해하고 각 노드에 적합한 검색 모드를 동적으로 할당하는 멀티에이전트 프레임워크
웹 앱을 리버스 엔지니어링해서 AI Agent 도구로 자동 변환하기
로그인된 웹 앱의 API 호출을 브라우저에서 감시해 자동으로 MCP 도구로 변환하는 에이전트를 만들었다. 소스 코드나 공식 API 문서 없이도 Jira, Spotify 같은 서비스에 AI 어시스턴트를 붙일 수 있다.
FableCut – AI 에이전트가 조작할 수 있는 브라우저 기반 비디오 에디터 (zero deps)
타임라인 전체를 JSON 파일 하나로 표현하고 MCP/REST로 AI 에이전트가 직접 편집할 수 있는 브라우저 비디오 에디터로, Claude 같은 AI가 프롬프트 하나로 영상을 자동 컷편집하고 결과를 실시간으로 UI에 반영해준다.