
SSH 키, AWS 자격 증명, .env 파일을 AI 코딩 에이전트가 읽지 못하도록 차단하는 샌드박스 및 MCP 프록시로, 기본 거부 정책과 변조 감지 감사 로그를 제공합니다.
Claude Code의 샌드박스는 기본적으로 에이전트가 SSH 키와 AWS 자격 증명을 읽을 수 있게 합니다. Aegis는 그렇지 않습니다.
두 개의 계층으로 구성되며, 둘 다 실제 하드웨어에서 검증되었습니다.
커널 샌드박스 — 에이전트 자체의 셸은 거부된 경로에 접근할 수 없습니다:
$ ! cat ~/.ssh/id_rsa
cat: /Users/you/.ssh/id_rsa: Operation not permitted
$ ! cat ~/.aws/credentials
cat: /Users/you/.aws/credentials: Operation not permitted
$ tail ~/Library/Application\ Support/Aegis/denials.log
kernel denied file-read-data /Users/you/.ssh/id_rsa to cat(pid 41560)
kernel denied file-read-data /Users/you/.aws/credentials to cat(pid 42180)
MCP 프록시 — 동일한 도구, 동일한 파일, Aegis를 앞에 두었을 때와 두지 않았을 때:
direct to the server: allowed: TOKEN=proof-env-secret
through aegis proxy: AEGIS DENIED: read_text_file
Reason: path matches deny rule '.env'
Rule: deny_paths
각 항목은 이번 릴리스에 대해 실행된 테스트로 뒷받침됩니다. 아직 테스트되지 않은 부분은 그렇다고 명시되어 있습니다.
aegis workspace add / remove / list — policy.json을 편집하지 않고도 에이전트가 작업할 수 있는 폴더를 변경합니다. 추가에는 항상 --confirm-grant가 필요하며, 제거에는 필요하지 않습니다. add는 홈 디렉터리, Aegis 자체 파일이 포함된 경로, ..가 포함된 경로, 존재하지 않는 폴더, 워크스페이스 내부에 있는 심볼릭 링크, 그리고 다른 워크스페이스 내부 또는 주변에 있는 워크스페이스를 거부합니다. 모든 변경은 감사 로그에 기록되고 샌드박스 프로필을 재생성합니다. 이미 실행 중인 세션은 시작할 때 가졌던 워크스페이스를 그대로 유지합니다 — 방금 제거한 워크스페이스도 포함해서요 — 이는 실제 샌드박스 세션을 기준으로 측정됩니다.aegis policy set-folder로 새 워크스페이스로 전환할 수 있었고, 링크가 가리키는 곳 어디든 권한이 부여되었습니다. 또한 다른 워크스페이스 내부에 생성된 워크스페이스는 나중에 심볼릭 링크로 교체되어 다음 실행 시 따라갈 수 있었습니다. 두 가지 모두 0.8.1에서 재현되었으며, 이제 해당 버전에서 실패함이 입증된 영구 회귀 테스트로 남아 있습니다.policy.json의 상대 경로는 거부됩니다. 상대 경로는 Aegis가 시작된 폴더를 기준으로 해석되었기 때문에, aegis run과 실행 래퍼가 하나의 정책에서 서로 다른 샌드박스를 적용할 수 있었습니다(측정 결과: 서로 다른 프로필 다이제스트). 경로는 절대 경로이거나 ~/로 시작해야 합니다.aegis doctor는 더 이상 편집 내용과 다음 실행 사이의 불일치를 보고하지 않습니다.aegis run과 aegis doctor는 실제 Claude Code 경로 — Aegis가 작성한 래퍼에서 읽음 — 와 샌드박스 외부에서 실행할 /login을 출력합니다. 해결되지 않은 사항: 취소되거나 만료된 토큰은 첫 메시지가 실패할 때까지 여전히 로그인된 것으로 표시되며(Claude Code의 상태는 만료를 보고하지 않음), 로그인은 여전히 샌드박스 내부에서 이루어질 수 없습니다. 이를 위해서는 아직 존재하지 않는 자격 증명 브로커가 필요합니다.aegis init은 아직 로그인하지 않은 신규 사용자를 보호합니다. 깨끗한 환경에서 안내서를 따라가며 발견한 사항: 0.8.1에서는 한 번도 로그인한 적 없는 Claude Code가 문서에 언급되지 않은 질문 뒤에 기본적으로 래핑되지 않은 채 남아 있어, claude가 샌드박스 외부에 머물렀습니다. 이제 샌드박싱에 동의하면 래핑되며, 샌드박스 외부에서 한 번 로그인하라는 강력한 경고(실제 Claude Code 경로, 그다음 /login)가 표시됩니다. aegis init의 마무리 단계가 이를 가장 먼저 안내하며, 그렇게 할 때까지 aegis doctor는 실패합니다. 같은 실행에서 init의 시작 및 종료 텍스트도 수정되었고, aegis init, aegis run, aegis doctor에 하나의 로그인 안내가 제공되었으며, 아무 효과 없는 변경이 nothing to change (nothing to change)를 출력하던 문제도 해결되었습니다.0.9.0에서 아직 테스트되지 않음: Linux, Claude Code 이외의 클라이언트, /login 흐름의 종단 간 테스트, 재빌드된 데스크톱 앱.
AI 코딩 에이전트와 사용자의 머신 사이에 위치합니다:
cat .env로 우회할 수 없습니다aegis doctor가 무결성을 검사하며, 샌드박스가 읽거나 쓸 수 없는 키로 샌드박스 외부에서 체크포인트됩니다처음이신가요? docs/getting-started.md가 단계별 안내를 제공하며, 기본값이 No인 두 가지 질문도 포함되어 있습니다.
앞서 aegis-mcp를 설치하라는 안내를 따르셨나요? 그 패키지는 Aegis가 아닙니다 — 동일한 import 이름인 aegis로 설치되는 무관한 프로젝트입니다. 먼저 제거하세요:
python3 -m pip uninstall aegis-mcp
aegis-sandbox가 이미 설치되어 있다면, 해당 제거 작업으로 인해 그 파일 두 개도 함께 삭제되므로 이후에 다시 설치하세요: python3 -m pip install --force-reinstall aegis-sandbox.
python3 -m pip install aegis-sandbox
aegis init # Claude Code / Cursor를 감지하고 몇 가지 질문을 합니다
aegis doctor # 경계가 실제로 설정되었는지 확인합니다
업그레이드 중인가요? aegis init을 다시 실행하세요. policy.json은 사용자의 것이며 몰래 다시 작성되지 않으므로, 새로운 샌드박스 도메인이 저절로 나타나지 않습니다 — 그리고 OAuth 토큰 엔드포인트가 없으면 샌드박스된 클라이언트는 토큰이 만료될 때 작동을 멈춥니다. aegis init이 새 호스트를 제안하며, 수락은 키 한 번이면 됩니다.
aegis init 전에 Claude Code에 로그인하세요; 래핑된 클라이언트가 로그인되어 있지 않으면 aegis doctor가 실패함전체 위협 모델: THREAT-MODEL.md
MIT