Powrót do bloga

AI dla początkującychPrzewodnik

Uruchamiasz Claude Code lub Codex w Pobranych? Sprawdzenie bezpieczeństwa AGENTS.md

Plik o nazwie AGENTS.md lub CLAUDE.md w Pobranych może sterować Claude Code i Codex. Czym są te pliki i 5-minutowe sprawdzenie twoich konfiguracji.

Autor: CheapTokens TeamOpublikowano 5 min czytania

Okładka: podrzucony AGENTS.md w folderze Pobrane docierający do konfiguracji agenta AI
Na tej stronie
  1. Czym są AGENTS.md i CLAUDE.md i dlaczego agent im wierzy
  2. Co badacze zrobili z plikiem w folderze Pobrane
  3. Które ustawienia sprawdzić i jak wygląda normalne
  4. Sprawdzenie w 5 minut
  5. Jeśli coś wygląda źle

Krótka odpowiedź: nie uruchamiaj Claude Code ani Codex w folderze ~/Downloads. 22 października 2026 firma zajmująca się bezpieczeństwem Forever Security opublikowała badanie pokazujące, że strona internetowa może po cichu zapisać plik o nazwie AGENTS.md lub CLAUDE.md w folderze Pobrane, a agent uruchomiony w tym folderze traktuje ten plik jako zaufane instrukcje. Poniżej: czym są te pliki, co udało się zmienić badaczom i sprawdzenie, które zajmuje około pięciu minut.

Wyobraź sobie zwykłą sytuację. Zapisujesz kilkanaście PDF-ów i zrzutów ekranu ze strony internetowej, otwierasz terminal w folderze Pobrane, wpisujesz claude lub codex i prosisz o „posortowanie tych plików”. Nic w tym nie wydaje się ryzykowne. I właśnie w tym tkwi haczyk.

Czym są AGENTS.md i CLAUDE.md i dlaczego agent im wierzy#

Agent do kodowania nie zaczyna każdej sesji od zera. Zanim spojrzy na twoje polecenie, sprawdza folder, w którym został uruchomiony, pod kątem pliku tekstowego ze stałymi instrukcjami: „używaj tabulatorów, uruchamiaj testy przez npm test, nigdy nie dotykaj folderu migracji”. AGENTS.md to nazwa ogólna, CLAUDE.md to ta sama idea dla Claude Code. W twoim własnym projekcie te pliki są przydatne, bo sam je napisałeś.

Agent nie potrafi jednak rozpoznać, kto napisał plik. CLAUDE.md, który strona internetowa podrzuciła do folderu Pobrane, wygląda dokładnie tak samo jak ten, który napisałeś w zeszłym tygodniu.

Fiszki

Pojęcia, które spotkasz w tym artykule

Co badacze zrobili z plikiem w folderze Pobrane#

Wpis Forever Security (autorzy Gal Weizman i Omer Samet, 22 października 2026) opisuje dwa przypadki. Wszystkie podane poniżej wskaźniki skuteczności to pomiary samych badaczy.

Codex. Podrzucony AGENTS.md kazał agentowi dodać wpis serwera MCP do ~/.codex/config.toml, a ten wpis prowadził do instalacji pakietu npm o nazwie function-color. Według badaczy ładunek uruchomił się w ponad 90% prób. Spójrz, gdzie znajduje się ten plik: w twoim folderze domowym, nie w Pobranych. Konfiguracja jest ogólnosystemowa, więc dotyczy każdej późniejszej sesji w dowolnym folderze, długo po tym, jak zapomnisz o folderze Pobrane.

Claude Code. Podrzucony CLAUDE.md próbował zapisać ustawienie ANTHROPIC_BASE_URL w .claude/settings.json. To ustawienie decyduje, dokąd agent wysyła ruch API. Skieruj je na serwer kogoś innego, a ten serwer zobaczy twój token OAuth i może odsyłać wywołania narzędzi do wykonania przez agenta. Zapis udał się w około połowie przypadków; ścieżka wykonana w ramach tej samej sesji — w około jednej piątej.

Od podrzuconego pliku do zmienionej konfiguracji
Jak podrzucony plik z instrukcjami trafia do własnych ustawień agenta (Forever Security, 22 października 2026)

Wpis jasno stwierdza, że w żadnym z produktów nic nie jest „zepsute”: agent działa zgodnie z projektem, a ryzyko wynika z tego, gdzie leży plik i jak bardzo agent mu ufa. Forever podaje też, że znalazł prawdziwy podrzucony AGENTS.md na maszynie klienta i zatrzymał złośliwą instalację npm, zanim uruchomił się jakikolwiek kod; npm usunął od tego czasu function-color. Ta ostatnia część to relacja samych badaczy. OpenNET opisał tę historię 26 października 2026 i wskazuje na podobne ryzyko, gdy AGENTS.md przychodzi przez pull request lub sklonowane repozytorium.

Szybkie sprawdzenie

Dlaczego przypadek Codex jest gorszy niż jedna zła sesja w Pobranych?

Pokaż odpowiedź

Odpowiedź: Zmieniona konfiguracja jest ogólnosystemowa, więc dotyczy każdej późniejszej sesji w dowolnym folderze

Podrzucony plik musi zadziałać tylko raz. To, co zapisze w ~/.codex/config.toml, pozostaje tam i ma zastosowanie do późniejszych sesji w każdym folderze.

Które ustawienia sprawdzić i jak wygląda normalne#

Dwa pliki, po jednym dla każdego narzędzia z badania.

W ~/.codex/config.toml szukaj wpisów [mcp_servers.*], których nie pamiętasz, że dodawałeś, oraz adresu base URL, którego nie ustawiłeś. Podejrzany wpis sprawia, że twoja maszyna pobiera i uruchamia coś z npm:

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

Nazwa helper i pakiet w tym miejscu to placeholdery. W przypadku badaczy pakietem stojącym za takim wpisem był function-color.

W .claude/settings.json szukaj punktu końcowego API lub proxy, którego tam nie umieściłeś. Jeśli nigdy nie ustawiałeś ANTHROPIC_BASE_URL, plik w ogóle nie powinien o tym wspominać. Jeśli ustawiałeś, powinien to być adres wybranego przez ciebie dostawcy. Dla CheapTokens klient w stylu Anthropic, taki jak Claude Code, używa https://api.cheaptokens.dev bez /v1 na końcu; klienci w stylu OpenAI używają https://api.cheaptokens.dev/v1.

Base URL, który ustawiłeś, kontra ten, którego nie ustawiłeś
To samo ustawienie dwa razy: adres po lewej to ten, który wybrałeś, po prawej — host, którego nie rozpoznajesz (placeholder)

Jeśli uruchamiasz Claude Code na własnym kluczu, instrukcja krok po kroku dotycząca podłączania Claude Code do CheapTokens pokazuje cały plik, a dokumentacja wymienia oba adresy base URL. W przypadku długich pętli agenta DeepSeek-V4-Flash (deepseek-ai/DeepSeek-V4-Flash-0731) ma kontekst 380K, do 32 768 tokenów wyjściowych na odpowiedź i jedną cenę o każdej porze; reszta jest na stronie modelu.

Cline, Aider i inne agenty nie były częścią tego badania, a każde z nich trzyma ustawienia we własnym miejscu. Nawyk jest ten sam: wiedzieć, który plik zawiera punkt końcowy, i raz go przeczytać.

Sprawdzenie w 5 minut#

Otwórz terminal i przejdź przez te kroki po kolei. Nic tutaj nie zmienia pliku; tylko odczytuje.

Krok po kroku

Sprawdź swoją maszynę

Znajdź obce pliki z instrukcjami

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

Każde trafienie, którego nie napisałeś: otwórz jako tekst i przeczytaj. Jeśli nie wiesz, skąd się wzięło, usuń je.

Odczytaj konfigurację Codex

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

Każda linia [mcp_servers.…] powinna być czymś, co pamiętasz, że dodawałeś. „No such file” jest w porządku, jeśli nie używasz Codex.

Odczytaj ustawienia Claude Code

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

Uruchom to z folderu projektu, aby objąć oba pliki. Każdy adres w wyniku powinien należeć do wybranego przez ciebie dostawcy.

Spójrz na swoją powłokę

bash
env | grep -i "BASE_URL"

To wyświetla adresy base URL ustawione jako zmienne środowiskowe. Ta sama zasada: powinieneś rozpoznać każdy z nich.

Poszukaj pakietu z tego przypadku

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

Uruchom też npm ls function-color w projektach, w których używałeś agenta. Jeśli się pojawi, traktuj maszynę jako przejętą.

Jeśli coś wygląda źle#

Najpierw zamknij agenta. Następnie usuń wpisy, których nie rozpoznajesz, i wymień każde poświadczenie, które agent mógł zobaczyć: klucze API, tokeny, wszystko w środowisku. Jeśli rotacja klucza to dla ciebie nowość, czym jest klucz API i jak go przechowywać omawia podstawy.

Nawyki, które zapobiegają powtórzeniu się sytuacji, wszystkie z zaleceń badaczy:

  • Uruchamiaj agenty w folderze projektu, który sam utworzyłeś, a nie w Pobranych.
  • Przeczytaj każdy AGENTS.md lub CLAUDE.md, którego nie napisałeś, zanim uruchomisz na nim agenta, w tym te, które przychodzą przez klon lub pull request.
  • Utrzymuj prośby o zatwierdzenie i sandboxing włączone i bądź ostrożny wobec każdej instrukcji, która każe agentowi je wyłączyć.