오픈소스 CLI를 만들어 AI 터미널이 비밀을 유출하지 않게 했습니다
Source: Dev.to
나는 AI 코딩 도구를 사랑합니다. 매일 사용합니다.
하지만 아무도 신경 쓰지 않는 문제가 있습니다: 보내는 모든 것이 필터 없이 바로 모델에 전달됩니다.
- 명령 기록
- 환경 변수
- 오류 로그에 남아 있는 자격 증명, 토큰, 고객 데이터
이 중 어느 것도 삭제되지 않습니다. 감사 로그도 없습니다. 프롬프트에 민감한 정보가 섞이지 않았다고 스스로 믿어야 합니다.
그것은 좋은 보안 자세가 아닙니다. 그래서 저는 무언가를 만들었습니다.
AI 기반 개발 워크플로우에서의 조용한 위험
AI 터미널 어시스턴트는 생산성을 크게 높여줍니다. 저는 계속해서 하나를 사용하고 있습니다. 대부분은 다음과 같이 동작합니다:
Your full prompt → LLM API → response back
필터링도 없고, 삭제도 없으며, 감사 로그도 없습니다.
즉, 프롬프트 컨텍스트에 다음과 같은 내용이 포함된다면:
- 명령 기록에 남은 자격 증명
- 오류 로그에 포함된 개인 식별 정보(PII)
- 환경에 있는 내부 호스트명
- 클립보드에 복사된 토큰
… 모두 모델에 전달됩니다.
사이드 프로젝트라면? 신경 쓸 필요 없죠. 하지만 프로덕션 시스템, 고객 데이터, 혹은 독점 코드를 다루는 순간, 이는 실제 컴플라이언스 문제로 이어집니다—특히 규제가 엄격한 산업이나 엔터프라이즈 고객과 작업할 때 더욱 그렇습니다.
So I built: Bast CLI
Bast 은 보안 게이트웨이를 통해 모든 요청이 LLM에 도달하기 전에 라우팅되는 무료 오픈‑소스 AI 터미널 어시스턴트입니다.
AI CLI에서 기대할 수 있는 모든 기능—자연어를 쉘 명령으로 변환, 명령 설명, 오류 복구—에 더해 다음과 같은 보안 레이어를 제공합니다:
- PII를 자동으로 삭제 (이메일, API 키, 자격 증명, 토큰) 모델에 전달되기 전에 제거
- 프롬프트 인젝션 및 탈옥 시도를 차단
- 모든 것을 로그 하여 언제 무엇이 전송되었는지 완전한 가시성을 제공
Go 언어로 작성되었으며, TUI를 위해 Bubble Tea를 사용하고, MIT 라이선스를 따릅니다.
Source:
실제 작동 모습
사용 가이드
![]()
Bastio AI Security | BAST CLI Tool — Screen Studio
Screen Studio 로 제작 및 공유
![]()
설치 (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/bastio-ai/bast/main/scripts/install.sh | sh
bast init
자연어로 명령 생성
$ bast run
> find all go files modified in the last week
find . -name "*.go" -mtime -7
[⏎ Run] [e Edit] [c Copy] [? Explain] [Esc Exit]
실행 전에 명령 이해하기
$ bast explain "tar -xzvf archive.tar.gz"
Extracts a gzip‑compressed tar archive. The flags:
x = extract,
z = decompress gzip,
v = verbose output,
f = specify filename.
실패한 명령 고치기
$ git push origin feature/auth
! [rejected] feature/auth -> feature/auth (non‑fast‑forward)
$ bast fix
The remote branch has commits you don't have locally.
Suggested fix:
git pull --rebase origin feature/auth
보안 레이어를 넘어
Bast는 단순한 보안 래퍼가 아니라, 완전한 기능을 갖춘 AI 터미널 어시스턴트입니다. 주요 특징:
위험한 명령 감지
rm -rf, git push --force, dd 등 파괴적인 작업을 실행하기 전에 자동으로 경고합니다. 보호되는 Git 작업(강제 푸시, 하드 리셋, 브랜치 삭제, 히스토리 재작성)의 전체 목록이 포함되어 있습니다.
Git 인식
현재 브랜치, 스테이징된 변경 사항, 머지/리베이스 상태, 최근 커밋을 파악합니다. “좋은 메시지로 내 변경 사항을 커밋해줘”라고 요청하면, diff를 읽어 의미 있는 커밋 메시지를 작성합니다.
에이전트 모드
/agent를 입력하면 다단계 작업을 수행합니다. Bast는 명령을 실행하고, 파일을 읽으며, 복잡한 워크플로를 완성하기 위해 반복할 수 있습니다:
$ bast run
> /agent find all TODO comments in go files and summarize them
Tool Calls:
run_command {"command": "grep -r 'TODO' --include='*.go' ."}
Found 2 TODO comments in the codebase:
1. internal/ai/anthropic.go — Add streaming support for responses
2. internal/tools/loader.go — Validate script permissions before execution
셸 통합
설정 파일에 eval "$(bast hook zsh)"를 추가하면 Ctrl+A로 Bast를 실행하고 Ctrl+E로 현재 입력 중인 명령을 설명받을 수 있습니다.
커스텀 플러그인
~/.config/bast/tools/에 간단한 YAML 매니페스트를 사용해 자체 도구로 Bast를 확장하세요. 배포 파이프라인, 데이터베이스 작업, 혹은 AI가 인식하도록 만들고 싶은 모든 워크플로에 유용합니다.
게이트웨이 (및 건너뛰는 방법)
Bastio 보안 게이트웨이는 월 100 000 요청까지 무료이며, 신용카드가 필요 없습니다. PII(개인 식별 정보) 삭제, 인젝션 차단, 관측성을 처리합니다.
Anthropic API에 직접 연결하려면:
export ANTHROPIC_API_KEY=sk-ant-...
export BAST_GATEWAY=direct
보안 기능은 사라지지만, 그 외의 모든 기능은 정상적으로 작동합니다.
왜 오픈소스인가?
도구가 여러분의 데이터를 보호한다고 주장한다면, 코드를 읽을 수 있어야 합니다. 폐쇄형 소스 보안 도구는 모순입니다.
전체 CLI는 MIT 라이선스로 GitHub에 공개되어 있습니다. 읽고, 포크하고, 깨고, 개선하세요.
다음 단계
이것은 v0.1.0 — 시작입니다. 제가 작업 중인 몇 가지 항목:
- Anthropic을 넘어서는 더 많은 LLM 제공자 지원
- 팀 대시보드 및 정책 제어
- 확장된 PII 탐지 패턴
- IDE 통합
여러분의 피드백을 기다립니다
이것은 제가 처음 올리는 Dev.to 포스트이며, bast는 완전히 새로운 프로젝트입니다. 민감한 데이터를 다루는 환경에서 AI 코딩 도구를 사용하고 있다면, 여러분이 어떻게 처리하고 있는지 정말 듣고 싶습니다:
- 프로덕션 코드베이스에 AI 어시스턴트를 적용하고 계신가요?
- 팀 차원에서 LLM에 보낼 수 있는 내용에 대한 정책이 있나요?
- 이런 것을 사용하시겠습니까, 아니면 과도하게 느껴지나요?
관심이 있다면 레포에 ⭐를 눌러주시고, 문제가 발생하면 이슈를 열어 주세요. 그리고 제가 놓친 부분을 알려 주세요.
GitHub: github.com/bastio-ai/bast
Website: bastio.com