Cara Mencegah AGENTS.md Berbahaya Membajak Coding Agent Anda

File AGENTS.md berbahaya dapat membajak Codex atau Claude Code dari folder Downloads Anda. Lima langkah bagi tim: folder awal yang aman, peninjauan file, deny rules, sandbox, dan pemeriksaan konfigurasi.

Aiden Flux

Aiden Flux

12 November 2026

TL;DR: Berkas AGENTS.md berbahaya dapat membajak agen pengodean (coding agent) hanya dengan menjalankan fungsi aslinya: agen membacanya saat startup dan mematuhi instruksinya. Forever Security menemukan kasus nyata di folder ~/Downloads milik salah satu pelanggan pada Oktober 2026. Untuk mencegahnya, jangan pernah menjalankan agen di folder yang tidak Anda kontrol, tinjau berkas instruksi selayaknya kode, tolak penulisan ulang konfigurasi dan jaringan, tetap aktifkan sandbox serta konfirmasi persetujuan (approval prompt), dan pantau perubahan pada konfigurasi agen itu sendiri.

Apa Itu Serangan AGENTS.md Berbahaya

AGENTS.md berbahaya adalah berkas instruksi proyek yang dirancang untuk mengarahkan agen pengodean melakukan tindakan berbahaya. Claude Code, Codex, dan agen lainnya memuat berkas ini secara otomatis dari folder tempat mereka dijalankan. Serangan ini tidak memerlukan celah keamanan (exploit): agen membaca berkas tersebut saat startup dan memperlakukan isinya sebagai aturan resmi proyek.

Isi berkasnya terbaca seperti catatan teknis biasa: langkah “preflight” yang memasang paket, atau catatan “proxy” yang mengubah rute lalu lintas API. Bagi sang agen, instruksi tersebut dianggap setara dengan arahan biasa seperti “gunakan pnpm, bukan npm”.

Jika pengembang Anda menjalankan beberapa agen pengodean, Sharkly menyediakan satu tempat terpusat untuk mendelegasikan dan meninjau pekerjaan tersebut; kita akan membahas nanti bagaimana hal ini mengubah lokasi agen dijalankan.

Mengapa Agen Pengodean Mematuhi Berkas Tersebut

Berkas instruksi berada langsung di dalam konteks agen berdampingan dengan prompt Anda, tanpa ada batasan tegas antara aturan proyek dan instruksi yang Anda berikan.

Dokumentasi memori Claude Code menyatakan bahwa isi CLAUDE.md dan AGENTS.md diperlakukan “sebagai konteks, bukan konfigurasi yang dipaksakan”. Claude Code memuat setiap AGENTS.md di direktori kerja maupun direktori-direktori induk di atasnya saat tidak ditemukan berkas CLAUDE.md. Sementara itu, panduan AGENTS.md Codex menyusuri direktori dari root proyek hingga ke direktori kerja saat ini dan menggabungkan semua berkas yang ditemukannya, secara default hingga 32 KiB. Berkas yang posisinya paling dekat dengan lokasi Anda menjalankan agen dimuat paling akhir, sehingga isinya diprioritaskan. Dengan demikian, folder tempat Anda memulai agen menentukan instruksi apa saja yang dimuat, dan folder induknya pun turut diperhitungkan.

Cara AGENTS.md Berbahaya Membajak Codex dan Claude Code

Pada 22 Oktober 2026, Forever Security memublikasikan temuan mereka di laptop seorang pelanggan. Sebuah agen pengodean mencoba memasang function-color, sebuah paket npm berbahaya yang sudah dikenal, dan instruksi tersebut berasal dari berkas AGENTS.md di folder ~/Downloads. Folder tersebut kebetulan merupakan direktori kerja agen. Forever berhasil memblokir proses instalasi sebelum kode apa pun dieksekusi, meski belum dapat memastikan bagaimana berkas itu bisa berada di sana.

Diagram of the attack chain: a web page silently saves AGENTS.md to the Downloads folder, a developer starts a coding agent there, the agent reads the file and rewrites its own config, and the result is a malicious npm package running or an OAuth token sent to an attacker server

Alasan mengapa folder Downloads begitu rentan: ini adalah satu-satunya folder tempat laman web dapat menyimpan berkas tanpa memerlukan klik konfirmasi. Forever kemudian mereproduksi alur serangan ini di laboratorium:

  1. Laman web yang mereka kendalikan menyimpan berkas bernama AGENTS.md ke dalam ~/Downloads.
  2. Pengembang membuka Codex di folder tersebut dan mengajukan perintah apa saja.
  3. Sebelum memulai tugas, Codex menambahkan server “project tools” ke ~/.codex/config.toml dan memasang paket dari npm.
  4. Karena konfigurasi tersebut berlaku untuk seluruh komputer, setiap sesi Codex berikutnya akan memuat server penyerang, di folder mana pun.

Forever melaporkan bahwa Codex mengeksekusi payload tersebut di lebih dari 90% percobaan. Sebagian besar pengujian menggunakan simulasi aman berupa pemanggil kalkulator; paket berbahaya yang sebenarnya hanya dijalankan satu kali di dalam VM yang terisolasi.

Claude Code terbukti lebih sulit dikelabui. Berkas CLAUDE.md yang disusupkan berhasil membelokkan lalu lintas API-nya ke server yang dikendalikan Forever, yang membocorkan token login OAuth dan memungkinkan server merespons seolah-olah dirinya adalah model tersebut. Forever melaporkan bahwa skenario ini berhasil sekitar 50% dari total pengujian. Kedua persentase tersebut berasal dari jenis serangan yang berbeda, sehingga jangan dibandingkan sebagai satu tingkat keberhasilan yang sama.

Poin utama dari Forever: tidak ada bug yang perlu ditambal. Masalah intinya adalah folder yang dapat ditulisi oleh web dipercaya begitu saja seolah-olah Anda sendiri yang mengisinya. Pelajaran serupa sebelumnya juga diungkap dalam riset Rules File Backdoor oleh Pillar Security, yang menyembunyikan instruksi di dalam berkas aturan menggunakan karakter Unicode tak terlihat sehingga luput dari peninjauan pada diff.

Lima Langkah Mencegah Serangan AGENTS.md Berbahaya

Dua langkah pertama mencegah berkas dimuat; tiga langkah berikutnya membatasi dampak kerusakan jika ada berkas berbahaya yang lolos.

Five defense layers between an untrusted instruction file and a developer laptop: never start agents in Downloads or home, review AGENTS.md and CLAUDE.md like code, deny config and network rewrites, keep sandbox and approval prompts on, watch config files and rotate

1. Di mana agen pengodean tidak boleh dijalankan?

Jangan pernah menjalankannya di ~/Downloads, folder home, atau folder apa pun yang tidak Anda buat sendiri. Forever menyebutkan sekitar separuh pelanggannya pernah menjalankan agen pengodean di dalam Downloads. Jika Anda membutuhkan agen untuk menyortir unduhan, salin berkas-berkas tersebut ke folder baru yang kosong dan jalankan agen di sana.

Skrip pengaman shell (shell guard) dapat memastikan aturan ini ditaati oleh pengguna yang sering lupa:

# ~/.zshrc: refuse to start an agent in folders the web can write to
agent_guard() {
  case "$PWD" in
    "$HOME"|"$HOME/Downloads"*|"/tmp"*)
      echo "Refusing to start an agent in $PWD. Use a project folder." >&2
      return 1 ;;
  esac
}
claude() { agent_guard && command claude "$@"; }
codex()  { agent_guard && command codex "$@"; }

2. Bagaimana cara meninjau AGENTS.md selayaknya kode?

Perlakukan setiap berkas instruksi sebagai kode yang dapat dieksekusi, termasuk pada repositori yang baru Anda clone lima menit lalu. Selanjutnya, buat proses peninjauannya otomatis. Masukkan berkas-berkas instruksi ke dalam CODEOWNERS sehingga setiap pull request yang memodifikasinya memerlukan peninjau yang ditunjuk khusus:

AGENTS.md            @your-org/platform
**/AGENTS.md         @your-org/platform
CLAUDE.md            @your-org/platform
/.claude/            @your-org/platform
/.cursor/rules/      @your-org/platform

Tambahkan pemeriksaan CI yang menggagalkan proses jika menemukan pola-pola yang menjadi andalan serangan ini: Unicode tersembunyi, perubahan base URL, dan perintah instalasi di dalam berkas instruksi.

#!/usr/bin/env bash
# ci/check-agent-instructions.sh
files=$(git ls-files '*AGENTS.md' '*CLAUDE.md' '.cursor/rules/*')
[ -z "$files" ] && exit 0
fail=0
# zero-width, bidi override and Unicode tag characters
if grep -nP '[\x{200B}-\x{200F}\x{202A}-\x{202E}\x{2066}-\x{2069}\x{E0000}-\x{E007F}]' $files; then
  echo "Hidden Unicode in an agent instruction file"; fail=1
fi
if grep -niE 'BASE_URL|chatgpt_base_url|mcp_servers|npx --yes|curl .*\| *(ba)?sh' $files; then
  echo "Config, network or install instruction in an agent file: needs review"; fail=1
fi
exit $fail

Pola grep kedua mungkin akan menandai beberapa baris yang sah (legitimate). Namun, baris-baris tersebut memang sebaiknya tetap ditinjau secara manual oleh manusia.

3. Tolak izin agen untuk menulis ulang konfigurasinya sendiri

Kedua skenario reproduksi serangan berujung pada agen yang memodifikasi pengaturannya sendiri. Hilangkan kemungkinan tersebut. Di Claude Code, tolak izin pengeditan pada folder konfigurasi agen dan cegah pembacaan berkas kredensial/rahasia di dalam .claude/settings.json milik proyek:

{
  "permissions": {
    "deny": [
      "Edit(./.claude/**)",
      "Edit(~/.claude/**)",
      "Edit(~/.codex/**)",
      "Read(./.env)",
      "Read(./.env.*)"
    ]
  }
}

Untuk tim, tetapkan aturan ini di pengaturan terkelola (managed settings) agar berkas level proyek tidak dapat melonggarkannya. Dokumentasi memori merekomendasikan penggunaan permissions.deny, sandbox.enabled, dan env terkelola untuk aturan wajib apa pun, serta hook PreToolUse guna memblokir aksi terlepas dari apa pun keputusan model. Mengunci perutean API di env terkelola adalah solusi langsung terhadap serangan manipulasi base URL. Pastikan untuk memeriksa sintaks aturan dengan versi yang Anda pasang sebelum menerapkannya secara luas.

4. Tetap aktifkan sandbox dan konfirmasi persetujuan

Forever menyarankan untuk selalu membiarkan gerbang persetujuan (approval gate) dan sandbox tetap aktif, serta tidak mempercayai teks instruksi apa pun yang menyuruh agen untuk melewati pengamanan tersebut.

Tentukan aksi mana saja yang wajib berhenti dan menunggu persetujuan manusia: instalasi paket, perubahan konfigurasi agen, dan panggilan jaringan ke host baru. Artikel kami mengenai gerbang persetujuan untuk agen pengodean membahas titik-titik penghentian tersebut, dan artikel tentang apa yang boleh dan tidak boleh dilakukan oleh agen pengodean mengulas model perizinan di baliknya.

5. Pantau konfigurasi agen dan segera lakukan rotasi jika terdeteksi perubahan

Forever merinci dengan tepat bagian mana saja yang perlu diperiksa. Pada ~/.codex/config.toml, perhatikan adanya blok [mcp_servers.*] yang mencurigakan atau perubahan pada chatgpt_base_url. Pada .claude/settings.json milik proyek, periksa ANTHROPIC_BASE_URL, proksi, atau endpoint yang tidak pernah Anda atur.

grep -nE '^\[mcp_servers\.|chatgpt_base_url' ~/.codex/config.toml
grep -rnE 'ANTHROPIC_BASE_URL|_PROXY|base_url' ~/.claude/settings.json .claude/settings*.json 2>/dev/null
npm ls -g --depth=0 2>/dev/null | grep -i function-color

Jika ditemukan kejanggalan, asumsikan token telah bocor dan segera lakukan rotasi. Token OAuth yang dicuri memberikan akses sesi aktif, bukan sekadar satu permintaan yang dicegat. Jika function-color ditemukan, anggap komputer tersebut telah terkompromi. Untuk langkah pembersihan menyeluruh, daftar periksa kebocoran rahasia agen pengodean kami mencantumkan penanggung jawab untuk setiap tahapan rotasi.

Peran Sharkly dalam Solusi Ini

Sharkly tidak memindai berkas instruksi atau menggantikan sistem perizinan bawaan agen; tetap terapkan kelima langkah di atas. Peran Sharkly adalah mengubah lokasi awal agen dijalankan dan siapa yang menentukan direktori tersebut.

Di Sharkly, sebuah Agen berjalan di Computer yang Anda hubungkan, dan setiap Agen memiliki Default working directory yang ditentukan dalam pengaturannya. Dengan opsi “Use temporary directory”, setiap eksekusi Task mendapatkan direktori terpisah dan git worktree baru dari repositori yang ditautkan. Dengan opsi “Specified directory”, eksekusi menggunakan jalur lokal yang telah Anda tentukan sebelumnya. Dokumentasi working directory menjelaskan kedua mode ini secara mendalam.

Sharkly Agent settings: the Default working directory field, where you choose a temporary directory with a fresh git worktree per run or a specified directory

Hal tersebut memindahkan penentuan folder dari terminal lokal pengembang ke pengaturan yang telah ditinjau. Dalam mode Temporary, Agen selalu memulai pekerjaannya dari checkout bersih repositori terkait, bukan dari folder acak yang sedang dibuka pengembang. Manajemen repositori pun dibatasi hanya untuk pengguna dengan hak akses admin Space atau Organisasi. Instruksi Agen, yang diinjeksikan pada setiap eksekusi, menjadi tempat yang tepat untuk menegaskan kembali aturan seperti “jangan pernah mengubah berkas konfigurasi agen”.

Hasil pekerjaan dikembalikan ke Task, tempat tim meninjaunya, sebagaimana dijelaskan dalam panduan meninjau kode buatan AI dengan bukti di level tugas.

Kesimpulan

Serangan AGENTS.md berbahaya dapat berhasil karena agen memang dirancang untuk mematuhi berkas instruksi, dan laman web dapat menaruh berkas tersebut di folder yang Anda percaya. Anda harus mengatasinya dengan pertahanan berlapis, bukan sekadar menunggu patch keamanan.

Mulailah hari ini dengan langkah ke-5 di setiap laptop pengembang untuk mengetahui apakah sistem Anda sudah terinfeksi. Selanjutnya, jika tim Anda mengoperasikan beberapa agen pengodean, siapkan Sharkly dengan satu Computer dan satu Agen dalam mode Temporary, sehingga setiap eksekusi selalu dimulai dari worktree yang bersih.

FAQ

Bisakah AGENTS.md berbahaya membajak Claude Code?

Bisa. Claude Code membaca AGENTS.md jika tidak ada CLAUDE.md di direktori kerja atau direktori di atasnya. Reproduksi Claude Code oleh Forever menggunakan CLAUDE.md yang disusupkan untuk membelokkan lalu lintas API dan berhasil membocorkan token OAuth pada sekitar separuh pengujiannya.

Apakah ini kerentanan yang akan ditambal oleh OpenAI atau Anthropic?

Forever berpendapat bahwa tidak ada yang perlu ditambal karena para agen bekerja sesuai rancangannya. Tangani masalah ini melalui disiplin pemilihan folder kerja, peninjauan kode, dan pengaturan perizinan.

Bagaimana cara mendeteksi instruksi tersembunyi di dalam AGENTS.md?

Baca berkas mentahnya (raw), bukan tampilan yang telah dirender, dan pindai karakter zero-width, bidi override, serta tag Unicode. Skrip CI di atas akan mendeteksi dan menggagalkan ketiganya.

Apakah sandbox dapat menghentikan AGENTS.md berbahaya?

Sandbox membatasi dampak kerusakan, tetapi tidak mencegah pemuatan berkas. Sandbox dan konfirmasi persetujuan dapat menghentikan instalasi atau penulisan konfigurasi yang diminta oleh berkas tersebut. Kombinasikan keduanya dengan aturan penolakan (deny rules) pada folder konfigurasi agen.

Apa yang harus dilakukan jika menemukan berkas AGENTS.md yang disusupkan?

Jangan jalankan agen di folder tersebut maupun sekitarnya. Periksa berkas konfigurasi agen untuk memastikan tidak ada server MCP baru atau base URL yang diubah, periksa keberadaan function-color, lalu segera rotasi token agen beserta semua kunci API yang berpotensi terbaca olehnya.

Jelajahi lebih lanjut

Gemini 4 Carbon dan Hydrogen: Padukan Agen Planner dengan Worker Cepat

Gemini 4 Carbon dan Hydrogen: Padukan Agen Planner dengan Worker Cepat

Padukan Gemini 4 Carbon dan Hydrogen dalam tim agen Anda: perencana Carbon menyusun sub-tugas, para pekerja dan pemverifikasi Hydrogen membangun serta menguji, dan pekerjaan yang terhambat dikembalikan ke perencana.

13 November 2026

Gemini 4 Hydrogen untuk Agen Coding: Model Cepat yang Siap Dijalankan Agen Tim Anda Sepanjang Hari

Gemini 4 Hydrogen untuk Agen Coding: Model Cepat yang Siap Dijalankan Agen Tim Anda Sepanjang Hari

Gemini 4 Hydrogen untuk coding agent: $1,50/$7,50 per 1 juta token, paket gratis, empat tingkat penalaran. Tugas apa saja yang cocok diberikan, serta kapan perlu eskalasi ke Carbon.

13 November 2026

Cara Mengarahkan Tugas AI Agent dengan Gemini Decisions API

Cara Mengarahkan Tugas AI Agent dengan Gemini Decisions API

Merutekan tugas agen AI dengan Gemini Decisions API: cukup satu panggilan untuk menentukan agen mana yang sesuai, tingkat kesulitannya, dan apakah manusia perlu mengambil keputusan, lalu ambang batas keyakinan akan menentukan penugasan otomatis atau peninjauan manual.

12 November 2026