오늘 GeekNews 신규 AI·개발 글 가운데 가장 실용적인 주제입니다. key-amnesiaClaude Code, Cursor, Codex 같은 에이전트가 API Key를 사용하되 값 자체는 읽지 못하도록 만들려는 오픈소스 도구입니다. GeekNews에는 약 하루 전 등록됐고, 원본 GitHub 저장소도 확인했습니다. news.hada.io, github.com

프로젝트가 제기하는 문제는 꽤 정확합니다. .env.gitignore에 넣으면 GitHub에 올라가는 것은 막지만, 프로젝트 폴더를 통째로 읽을 수 있는 코딩 에이전트는 .env 역시 읽을 수 있습니다. Agent session transcript, shell history, MCP 설정 파일에도 credential이 남을 수 있습니다. github.com

key-amnesia는 secret을 암호화 vault에 저장하고, 에이전트가 명령을 실행할 때 필요한 값만 child process environment에 주입합니다. Agent에는 raw 값이 전달되지 않으며 출력에 secret이 그대로 포함될 경우 이를 가린 뒤 결과를 에이전트에 반환합니다. 실제 승인이 필요한 경우에는 에이전트가 접근할 수 없는 별도의 console에서 사용자가 비밀번호를 입력하도록 설계됐습니다. Claude Code·Cursor·Codex용 hook과 skill 설정도 제공합니다. github.com

다만 이 프로젝트를 그대로 production 보안 표준으로 받아들이면 안 됩니다. README 스스로 base64 등으로 값이 변형돼 출력되면 censor가 잡지 못할 수 있고, 같은 OS 사용자 권한을 가진 프로세스의 위험, agent가 hook 설정을 수정할 수 있는 문제 등을 한계로 명시합니다. 현재 GitHub 규모도 아직 작은 초기 프로젝트입니다. github.com

여기서 가져가야 할 아이디어

특정 도구보다 중요한 원칙은:

Agent에게 Secret을 주지 말고, Secret이 필요한 Capability만 줘라.

예를 들어 나쁜 구조는:

Agent → AWS_SECRET_ACCESS_KEY

이고, 더 나은 구조는:

Agent → "S3 객체 업로드" capability → credential broker → AWS

입니다.

API Key 원문을 AI context에 한 번 넣어버리면 모델 자체의 신뢰성과 별개로 로그·history·tool output 등 여러 경로에 남을 가능성이 생깁니다.

오늘 바로 점검할 부분

코딩 에이전트를 사용하고 있다면 프로젝트 안에서 최소한 .env, .npmrc, 클라우드 credential JSON, MCP config, shell history, agent session transcript가 에이전트에 읽힐 수 있는 상태인지 확인할 가치가 있습니다. key-amnesia를 반드시 사용하라는 의미는 아니며, 운영 환경에서는 Vault, cloud-native secret manager, short-lived token, least privilege 방식이 더 적합할 수 있습니다. github.com

key-amnesia GitHub 원문