오늘 GeekNews 신규 개발 글 가운데 실무적으로 가장 유용한 것은 unbash입니다. GeekNews에는 약 22시간 전에 등록됐으며 원본 GitHub까지 확인했습니다. news.hada.io, github.com

unbash는 TypeScript로 작성된 zero-dependency Bash parser입니다.

중요한 점은 shell 명령을 실행하지 않습니다.

예를 들어 agent가:

curl x | sh

같은 명령을 만들었다면 문자열만 보는 것이 아니라:

Pipeline
 ├ curl
 └ sh

처럼 AST 구조로 파싱할 수 있습니다.

Substitution도 마찬가지입니다.

echo "$(rm -rf ...)"

안에 숨은 nested command까지 별도 구조로 추출할 수 있습니다. github.com

프로젝트가 명시한 주요 용도도 정확히 Agent 시대에 맞습니다.

  • permission prompt
  • command allowlist
  • audit
  • CI script 분석
  • generated Bash validation
  • 실행 전 command preview github.com

다만 이것은 Sandbox가 아님

프로젝트 문서 자체도 강하게 경고합니다.

unbash는:

파싱만 합니다.

명령이 안전한지 결정하지도 않고, shell expansion을 실행하지도 않고, sandbox도 제공하지 않습니다. 보안 용도로 사용할 경우 nested script와 expansion까지 사용자가 별도로 policy 평가해야 합니다. github.com

왜 Agent 개발에서 유용한가

코딩 agent에게 바로:

LLM → shell.exec()

을 주는 것보다:

LLM
 ↓
Bash text
 ↓
Parser
 ↓
Policy Engine
 ↓
Approval
 ↓
Sandbox execution

구조를 만드는 것이 훨씬 안전합니다.

예를 들어 AST를 보고 다음과 같이 정책을 만들 수 있습니다.

git status        → 자동 허용
npm test          → 자동 허용
rm                → 승인 필요
curl | bash       → 차단
sudo              → 차단
> production.env  → 차단

모델에게 “위험한 명령을 쓰지 마”라고 시키는 것보다 훨씬 확실한 접근입니다.

현재 GitHub 기준 약 125 stars, ISC 라이선스이며 프로젝트 자체 benchmark에서는 tree-sitter-bash보다 높은 parsing throughput을 주장합니다. 이 속도 수치는 프로젝트 작성자의 자체 benchmark입니다. github.com

unbash GitHub 원문