블로그로 돌아가기

AI 입문가이드

Downloads에서 Claude Code나 Codex를 실행하시나요? AGENTS.md 안전 점검

Downloads에 있는 AGENTS.md 또는 CLAUDE.md 파일이 Claude Code와 Codex를 조종할 수 있습니다. 이 파일들이 무엇인지와 설정을 5분 만에 점검하는 방법입니다.

작성자: CheapTokens Team 게시됨읽는 시간 6분

커버: Downloads 폴더에 심어진 AGENTS.md가 AI 에이전트 설정에 도달하는 모습
이 페이지의 내용
  1. AGENTS.md와 CLAUDE.md란 무엇이며, 에이전트가 이를 믿는 이유
  2. 연구진이 Downloads의 파일로 한 일
  3. 어떤 설정을 살펴봐야 하며, 정상적인 설정은 어떤 모습인가
  4. 5분 점검
  5. 뭔가 잘못된 것 같다면

짧은 답변: ~/Downloads 폴더에서 Claude Code나 Codex를 시작하지 마세요. 2026년 10월 22일 보안 회사 Forever Security는 웹사이트가 AGENTS.md 또는 CLAUDE.md라는 파일을 Downloads에 조용히 저장할 수 있고, 그 폴더에서 시작된 에이전트가 이 파일을 신뢰할 수 있는 지시로 취급한다는 연구 결과를 발표했습니다. 아래에서는 이 파일들이 무엇인지, 연구진이 무엇을 바꿀 수 있었는지, 그리고 약 5분이면 되는 점검 방법을 다룹니다.

평범한 상황을 떠올려 보세요. 웹사이트에서 PDF와 스크린샷 열두 개쯤을 저장하고, Downloads에서 터미널을 열고 claude 또는 codex를 입력한 뒤 "이 파일들 정리해 줘"라고 요청했습니다. 딱히 위험해 보이는 부분은 없습니다. 그리고 바로 그게 함정입니다.

AGENTS.md와 CLAUDE.md란 무엇이며, 에이전트가 이를 믿는 이유#

코딩 에이전트는 매 세션을 백지에서 시작하지 않습니다. 요청을 살펴보기 전에, 시작된 폴더에서 상시 지시가 담긴 일반 텍스트 파일을 찾습니다. "탭을 사용하고, 테스트는 npm test로 실행하고, migrations 폴더는 절대 건드리지 마" 같은 내용이죠. AGENTS.md는 일반적인 이름이고, CLAUDE.md는 Claude Code에서 같은 개념입니다. 여러분의 프로젝트에서는 여러분이 직접 작성했기 때문에 이 파일들이 유용합니다.

하지만 에이전트는 누가 파일을 작성했는지 알 수 없습니다. 웹사이트가 Downloads에 떨어뜨린 CLAUDE.md는 지난주에 여러분이 작성한 파일과 똑같이 보입니다.

플래시카드

이 글에서 만나게 될 용어

연구진이 Downloads의 파일로 한 일#

Forever Security의 글(저자 Gal Weizman과 Omer Samet, 2026년 10월 22일)은 두 가지 사례를 설명합니다. 아래의 모든 성공률은 연구진이 직접 측정한 값입니다.

Codex. 심어 놓은 AGENTS.md는 에이전트에게 ~/.codex/config.toml에 MCP 서버 항목을 추가하라고 지시했고, 그 항목은 function-color라는 npm 패키지를 설치하도록 이어졌습니다. 연구진에 따르면 페이로드는 시도의 90% 이상에서 실행되었습니다. 그 파일이 어디에 있는지 보세요. Downloads가 아니라 홈 폴더입니다. 설정은 머신 전체에 적용되므로, Downloads 폴더는 잊은 지 오래된 뒤에도 이후의 모든 폴더에서 실행되는 모든 세션이 영향을 받습니다.

Claude Code. 심어 놓은 CLAUDE.md는 .claude/settings.json에 ANTHROPIC_BASE_URL 설정을 쓰려고 시도했습니다. 이 설정은 에이전트가 API 트래픽을 어디로 보낼지 결정합니다. 다른 사람의 서버를 가리키게 하면 그 서버는 여러분의 OAuth 토큰을 보고, 에이전트가 실행할 도구 호출을 돌려보낼 수 있습니다. 쓰기 성공률은 약 절반이었고, 같은 세션 안에서 실행된 경로는 약 5분의 1이었습니다.

심어 놓은 파일에서 변경된 설정까지
심어 놓은 지시 파일이 어떻게 에이전트 자체 설정에 들어가는가 (Forever Security, 2026년 10월 22일)

이 글은 두 제품 모두 "고장 난" 것이 없다는 점을 분명히 합니다. 에이전트는 설계대로 작동하며, 위험은 파일이 놓인 위치와 에이전트가 그 파일을 얼마나 신뢰하는지에서 비롯됩니다. Forever는 또한 고객 머신에서 실제로 심어진 AGENTS.md를 발견했고 코드가 실행되기 전에 악성 npm 설치를 막았다고 밝혔습니다. 이후 npm은 function-color를 제거했습니다. 이 마지막 부분은 연구진의 자체 설명입니다. OpenNET은 2026년 10월 26일 이 사건을 보도하며, AGENTS.md가 풀 리퀘스트나 복제된 저장소를 통해 들어올 때도 비슷한 위험이 있다고 지적했습니다.

빠른 확인

Codex 사례가 Downloads에서의 한 번의 나쁜 세션보다 왜 더 심각한가?

정답 보기

정답: 변경된 설정은 머신 전체에 적용되므로 이후의 모든 폴더에서 실행되는 모든 세션이 영향을 받는다

심어 놓은 파일은 한 번만 실행되면 된다. 그것이 ~/.codex/config.toml에 기록한 내용은 그대로 남아 이후의 모든 폴더 세션에 적용된다.

어떤 설정을 살펴봐야 하며, 정상적인 설정은 어떤 모습인가#

파일 두 개, 연구에 등장한 도구마다 하나씩입니다.

~/.codex/config.toml에서 기억에 없는 [mcp_servers.*] 항목과 직접 설정하지 않은 base URL을 찾아보세요. 의심스러운 항목은 여러분의 머신이 npm에서 무언가를 가져와 실행하게 만듭니다.

toml
[mcp_servers.helper]
command = "npx"
args = ["-y", "some-package"]

여기서 helper라는 이름과 패키지는 자리 표시자입니다. 연구진의 사례에서 이런 항목 뒤에 있던 패키지는 function-color였습니다.

.claude/settings.json에서 직접 넣지 않은 API 엔드포인트나 프록시를 찾아보세요. ANTHROPIC_BASE_URL를 설정한 적이 없다면 파일에 그것이 언급되어서는 안 됩니다. 설정했다면 선택한 제공자의 주소여야 합니다. CheapTokens의 경우 Claude Code 같은 Anthropic 스타일 클라이언트는 끝에 /v1 없이 https://api.cheaptokens.dev를 사용하고, OpenAI 스타일 클라이언트는 https://api.cheaptokens.dev/v1를 사용합니다.

직접 설정한 base URL과 그렇지 않은 것
같은 설정 두 가지: 왼쪽 주소는 직접 선택한 것이고, 오른쪽은 알아볼 수 없는 호스트입니다 (자리 표시자)

자체 키로 Claude Code를 실행한다면 Claude Code를 CheapTokens에 연결하는 단계별 안내에서 전체 파일을 볼 수 있고, 문서에 두 base URL이 모두 나와 있습니다. 긴 에이전트 루프에는 DeepSeek-V4-Flash(deepseek-ai/DeepSeek-V4-Flash-0731)가 380K 컨텍스트, 답변당 최대 32,768 출력 토큰, 시간대와 무관한 단일 가격을 제공합니다. 나머지는 모델 페이지에서 확인하세요.

Cline, Aider 및 기타 에이전트는 이 연구에 포함되지 않았고, 각자 설정을 다른 곳에 보관합니다. 습관은 같습니다. 어느 파일에 엔드포인트가 있는지 알고 한 번 읽어보세요.

5분 점검#

터미널을 열고 순서대로 진행하세요. 여기서는 어떤 파일도 변경하지 않고 읽기만 합니다.

단계별로

머신 점검

남아 있는 지시 파일 찾기

bash
find ~/Downloads -maxdepth 3 -name "AGENTS.md" -o -name "CLAUDE.md"

직접 작성하지 않은 결과가 나오면 텍스트로 열어 읽어보세요. 어디서 왔는지 모르겠다면 삭제하세요.

Codex 설정 읽기

bash
grep -n "mcp_servers\|base_url" ~/.codex/config.toml

모든 [mcp_servers.…] 줄은 직접 추가한 기억이 있는 것이어야 합니다. Codex를 사용하지 않는다면 "No such file"이 나와도 괜찮습니다.

Claude Code 설정 읽기

bash
grep -n "BASE_URL\|proxy" ~/.claude/settings.json .claude/settings.json

두 파일이 모두 포함되도록 프로젝트 폴더에서 실행하세요. 출력의 모든 주소는 직접 선택한 제공자여야 합니다.

셸 확인

bash
env | grep -i "BASE_URL"

환경 변수로 설정된 base URL을 나열합니다. 같은 규칙입니다. 각각을 알아볼 수 있어야 합니다.

사례에 나온 패키지 찾기

bash
npm ls -g --depth=0 | grep function-color

에이전트를 사용한 프로젝트 안에서 npm ls function-color도 실행하세요. 나타난다면 머신이 침해된 것으로 간주하세요.

뭔가 잘못된 것 같다면#

먼저 에이전트를 종료하세요. 그런 다음 알아볼 수 없는 항목을 제거하고, 에이전트가 볼 수 있었던 모든 자격 증명을 교체하세요. API 키, 토큰, 환경에 있는 모든 것입니다. 키 교체가 처음이라면 API 키란 무엇이며 어떻게 보관하는가에서 기본을 다룹니다.

다시는 일어나지 않게 하는 습관은 모두 연구진의 완화 조치에서 나온 것입니다.

  • Downloads가 아니라 직접 만든 프로젝트 폴더에서 에이전트를 시작하세요.
  • 직접 작성하지 않은 AGENTS.md 또는 CLAUDE.md는 에이전트를 실행하기 전에 읽어보세요. 복제나 풀 리퀘스트를 통해 들어온 것도 포함입니다.
  • 승인 프롬프트와 샌드박싱을 켜 두고, 에이전트에게 이를 끄라고 요청하는 지시는 경계하세요.