11 Agustus 2026, sebuah analisis muncul di Hacker News yang wajib dibaca oleh siapa saja yang menggunakan asisten AI dalam IDE kerja mereka: seorang peneliti mengarahkan VS Code dengan GitHub Copilot ke proxy penangkap dan melihat apa yang sebenarnya dikirim ke server. Ternyata, permintaan yang dikirim jauh lebih banyak daripada hanya baris yang Anda tambahkan — termasuk konten dari .env yang terbuka dalam bentuk mentah.
Berita baiknya: siapa pun dapat memeriksa ini, dan tidak hanya di Copilot. Di bawah ini adalah instruksi kerja tentang cara dalam 20–30 menit mengaudit lalu lintas asisten Anda, apa yang harus dicari dalam permintaan yang ditangkap, dan batasan dari mekanisme pengecualian file bawaan.
Mengapa melakukan ini sendiri
Dokumentasi vendor menjelaskan kebijakan, bukan perilaku aktual klien. Antara "kami tidak menggunakan kode Anda untuk pelatihan" dan "klien tidak mengirimkan kode Anda ke server" — terdapat jurang: untuk menghasilkan saran, model harus mendapatkan konteks, dan pertanyaannya hanya seberapa luas klien mengumpulkan konteks ini.
Audit diperlukan jika Anda:
- bekerja berdasarkan NDA atau dengan data pribadi klien dan wajib mengetahui apa yang keluar dari perimeter;
- menyimpan rahasia, konfigurasi stand, alamat internal, dan token di repositori;
- bertanggung jawab atas kepatuhan dalam tim dan membutuhkan log permintaan nyata, bukan hanya tangkapan layar dari pengaturan;
- hanya ingin memahami mengapa asisten tiba-tiba "tahu" tentang file yang tidak pernah Anda buka.
Apa yang ditemukan dalam lalu lintas Copilot
Analisis yang dimaksud mengandalkan mitmproxy klasik: VS Code diarahkan ke proxy lokal di port 8080 dan mematikan pemeriksaan sertifikat yang ketat. Temuan kunci:
- Konteks lebih luas dari satu file. Saat melengkapi secara inline, klien mengumpulkan hingga 20 file, 8 ringkasan perubahan terakhir, dan 3 baris konteks di sekitar setiap perubahan, ditambah teks lengkap dari file saat ini dan file yang baru diedit dalam bentuk diff.
- Rahasia tidak disembunyikan. Dalam tubuh permintaan, field
promptberisi string sepertiTEST_ENV_VAR_SECRET="mysecretenvvar"— artinya variabel lingkungan dari file terbuka dikirim sebagai teks biasa. - Basis data lokal juga terbuka. File
session-store.dbmenyimpanuser_messagedanassistant_responsetanpa enkripsi dan pengeditan: di dalamnya tersimpan token, kunci penyedia cloud, dan kata sandi dari string koneksi yang pernah Anda masukkan ke dalam obrolan. - Panggilan layanan. Selain melengkapi itu sendiri, klien juga mengakses
/models,/agents/swe/models,/models/session/intent, dan endpoint OAuth GitHub — dari sini terlihat jelas bagaimana asisten mengklasifikasikan permintaan Anda bahkan sebelum menghasilkan respons.
Perlu diingat: klien mengirimkan URL repositori saat ini ke server untuk mendapatkan kebijakan pengecualian yang berlaku. Fakta ini sendiri tidak berbahaya, tetapi itu berarti komposisi pohon kerja Anda — juga merupakan sinyal.
Langkah demi langkah: mengatur penangkapan
- Instal mitmproxy dan jalankan. Cukup dengan antarmuka web:
mitmweb. Secara default, proxy mendengarkan di port 8080, konsol terbuka di browser. Untuk CI dan sesi panjang, lebih nyaman menggunakanmitmdump. - Pasang sertifikat root. Pada peluncuran pertama, mitmproxy membuat CA di direktori
~/.mitmproxy(filemitmproxy-ca-cert.cer). Ini perlu ditambahkan ke daftar yang dipercaya — jika tidak, klien akan memutuskan koneksi TLS. Selama audit, cukup percaya pada tingkat pengguna; setelah itu — hapus sertifikat, jangan biarkan CA asing di sistem "hanya untuk berjaga-jaga". - Pilih mode penangkapan. Ada tiga mode, dan pilihan yang tepat menghemat satu jam kerja:
- regular — proxy biasa, klien diatur secara eksplisit. Ini adalah opsi yang paling dapat diprediksi.
- local — penangkapan transparan aplikasi di mesin yang sama, tanpa mengedit pengaturan program:
mitmproxy --mode local:Codehanya akan menangkap proses VS Code,--mode local:42— proses dengan PID yang ditentukan,--mode local:!curl— semua kecuali curl. Ini adalah cara terbaik untuk mendengarkan asisten yang tidak memiliki pengaturan proxy. - upstream — rantai, ketika mitmproxy berada di belakang proxy Anda sendiri:
mitmdump --mode upstream:http://host:8081, dan login serta kata sandi ditentukan dengan opsi--set upstream_auth=user:pass.
- Arahkan IDE ke proxy (untuk mode regular). Di VS Code dalam
settings.json:"http.proxy": "http://127.0.0.1:8080""http.proxySupport": "override""http.proxyStrictSSL": false— hanya selama audit. Flag ini sepenuhnya mematikan pemeriksaan sertifikat, dan tidak boleh dibiarkan dalam konfigurasi kerja.
- Atasi masalah sertifikat dengan cara yang tepat. Ekstensi Copilot berjalan di Node, jadi cara yang benar adalah tidak mematikan pemeriksaan, tetapi mengumpulkan PEM dengan CA root ditambah sertifikat mitmproxy dan menyebutkannya melalui variabel lingkungan
NODE_EXTRA_CA_CERTS. IDE perlu di-restart: variabel ini dibaca saat proses dimulai. - Catat aliran ke file. Melihat secara langsung dalam waktu nyata tidak berguna — ada puluhan permintaan per menit. Aktifkan
--set save_stream_file=flows.dump, dan agar tidak mengumpulkan semuanya, batasi sampel melalui--set save_stream_filter=.... Kemudian file dapat dianalisis secara offline dengan tenang. - Cari di tubuh permintaan, bukan di URL. Teknik praktis: letakkan file canary dengan string unik di repositori pengujian (misalnya,
CANARY_9f3c_DO_NOT_SEND), buka di editor, kerjakan di file sebelah — dan cari canary di tubuh yang ditangkap. Dengan cara ini, Anda akan melihat radius pengumpulan konteks yang sebenarnya dari versi klien Anda.
Perangkap
Lisensi dapat memblokir penangkapan. Pada rencana korporat, Copilot memberikan kesalahan seperti "Lisensi Copilot Anda saat ini tidak mendukung koneksi proxy dengan sertifikat yang ditandatangani sendiri". Ini bukan bug proxy — klien dengan sengaja menolak untuk bekerja melalui CA yang ditandatangani sendiri. Ini dapat diatasi dengan sertifikat yang dipercaya di tingkat sistem atau membangun PEM untuk Node; jika kebijakan organisasi melarang ini, audit harus disetujui dengan admin, bukan dihindari.
Pemantauan dan QUIC. Beberapa klien menggunakan HTTP/3 di atas QUIC, yang tidak dapat dilihat oleh proxy biasa. Jika setelah mengaktifkan penangkapan aplikasi "berfungsi, tetapi log kosong" — hampir selalu alasannya adalah ini: blokir UDP/443 untuk proses pengujian, dan klien akan kembali ke HTTP/2.
Telemetri dan muatan berjalan di jalur yang berbeda. Jangan menarik kesimpulan "tidak ada yang keluar" hanya berdasarkan satu endpoint: lihat seluruh daftar host yang diakses oleh proses, bukan hanya yang disebutkan dalam dokumentasi.
Kerangka hukum. Menangkap lalu lintas di mesin Anda sendiri dan akun Anda sendiri diperbolehkan. Mendengarkan laptop kerja orang lain tanpa sepengetahuan pemiliknya — itu sudah cerita lain, dan tidak ada "keamanan" yang dapat membenarkannya.
Apa yang harus dilakukan dengan hasilnya
Jika audit menunjukkan bahwa permintaan mengandung file yang tidak perlu, alat bawaan terlihat seperti ini — dan masing-masing memiliki batasan yang signifikan.
- Pengecualian konten. Mekanisme resmi GitHub yang melarang Copilot menggunakan jalur yang ditentukan. Hanya tersedia di rencana Business dan Enterprise, diatur oleh administrator dalam pengaturan Copilot, didukung di VS Code, Visual Studio, dan JetBrains; di Xcode, Eclipse, dan Vim/Neovim — hanya untuk saran inline.
- Lubang utama — mode agen. Dokumentasi secara langsung menyatakan bahwa pengecualian tidak didukung dalam mode Edit dan Agent di Copilot Chat, serta di Copilot CLI. Artinya, di tempat di mana asisten sendiri menjelajahi file, membaca konfigurasi, dan menjalankan perintah, penyaringan platform tidak diterapkan. Jika Anda mengandalkan pengecualian konten sebagai satu-satunya penghalang — tidak ada penghalang dalam mode agen.
- .gitignore tidak melindungi. Kesalahpahaman umum: pengecualian dari indeks Git tidak berarti pengecualian dari konteks asisten.
- Minimum organisasi. Rahasia — di manajer rahasia, bukan di
.envdi samping kode; obrolan asisten bukan tempat untuk menyisipkan string koneksi; basis data lokal riwayat harus dibersihkan sama seperti Anda membersihkan riwayat shell.
Di mana proxy dan mengapa Anda membutuhkannya
Penangkapan memiliki kelanjutan praktis. Pertama, mode upstream memungkinkan Anda melewatkan seluruh lalu lintas asisten melalui node keluar yang dikendalikan: Anda sekaligus melihat permintaan dan mengontrol dari alamat mana mereka dikirim. Ini diperlukan ketika API asisten tidak tersedia dari wilayah Anda atau ketika kebijakan perusahaan mengharuskan IP keluar yang tetap — untuk skenario semacam itu, proxy data center yang stabil dengan alamat tetap sangat cocok.
Kedua, stand yang sama berguna untuk debugging otomatisasi: ketika agen AI sendiri menjelajahi situs, penangkapan menunjukkan header apa yang sebenarnya mereka kirim dan apa yang menangkap perlindungan. Kami membahas kombinasi ini dalam materi tentang proxy untuk agen AI di Playwright dan MCP — di sana tentang pemilihan jenis alamat untuk skenario agen, di mana diperlukan IP residensial, bukan server.
Jika Anda belum pernah mengatur mitmproxy sebelumnya, mulailah dengan pengaturan dasar untuk penangkapan HTTPS — ini dijelaskan secara rinci dalam panduan kami untuk penangkapan lalu lintas melalui mitmproxy, dan kemudian bangun di atasnya dengan mode local dan upstream.
Kesimpulan
Audit lalu lintas asisten AI bukanlah paranoia, melainkan kebersihan teknik yang normal, yang memakan satu malam dan hanya sekali. Analisis Copilot menunjukkan gambaran yang jelas: klien mengumpulkan konteks secara luas, rahasia masuk ke dalam konteks ini bersamaan dengan kode, riwayat lokal disimpan dalam teks terbuka, dan pengecualian bawaan tidak berfungsi di mode paling berbahaya — mode agen.
Periksa bukan dokumentasi, tetapi lalu lintas. Jalankan mitmproxy dalam mode local, letakkan canary di repositori, kumpulkan aliran ke file dan lihat dengan mata Anda sendiri apa yang keluar dari mesin Anda. Selanjutnya, keputusan sederhana: apakah Anda secara sadar menerima volume pengiriman ini, atau Anda memindahkan rahasia keluar dari pohon kerja sebelum server asing melihatnya.
