19 poin oleh GN⁺ 19 hari lalu | 3 komentar | Bagikan ke WhatsApp
  • Karena Anthropic mendistribusikan paket npm dengan source map disertakan, seluruh kode Claude Code terbuka ke publik, sehingga fitur internal dan flag eksperimental ikut terungkap
  • Kode tersebut mencakup penyisipan alat palsu untuk mencegah peniruan model (anti-distillation), mode undercover untuk menyembunyikan identitas AI, dan regex frustration untuk mendeteksi makian
  • Terdapat struktur attestation klien native dan verifikasi hash setingkat DRM, yang dirancang untuk memblokir akses API dari alat tidak resmi
  • Dari komentar internal juga terungkap berbagai fitur eksperimental seperti 250 ribu panggilan API gagal per hari, mode agen otonom KAIROS yang belum selesai, serta sistem pendamping bergaya Tamagotchi
  • Kebocoran ini dianggap sebagai kasus terbukanya struktur produk inti dan roadmap Anthropic, dengan dugaan penyebab berupa bug source map pada runtime Bun

Struktur internal Claude Code yang terungkap lewat kebocoran source map

  • Karena Anthropic mendistribusikan paket npm dengan source map disertakan, seluruh source Claude Code terbuka
    • Paket tersebut kemudian dihapus, tetapi kodenya sudah dimirror di berbagai tempat dan menjadi objek analisis
    • Ini adalah insiden kebocoran kedua dalam sepekan, setelah sebelumnya dokumen spesifikasi model sempat terungkap
    • Terjadi tak lama setelah Anthropic memblokir secara hukum penggunaan API internal oleh alat pihak ketiga
  • Anti-distillation: penyisipan alat palsu untuk mencegah peniruan

    • Di claude.ts ada flag ANTI_DISTILLATION_CC; saat aktif, permintaan API menyertakan anti_distillation: ['fake_tools'] untuk menyisipkan definisi alat palsu ke system prompt
      • Tujuannya adalah mencemari upaya peniruan model yang dilakukan dengan menangkap traffic API
      • Hanya aktif pada sesi CLI pertama ketika flag GrowthBook tengu_anti_distill_fake_tool_injection dinyalakan
    • Di betas.ts ada mekanisme kedua berupa perlindungan sisi server berbasis ringkasan
      • Teks di antara pemanggilan alat diringkas lalu dikembalikan bersama tanda tangan kriptografis, sehingga bisa dipulihkan kemudian
      • Bahkan jika traffic direkam dari luar, seluruh proses penalaran tidak bisa dilihat
    • Fitur ini mensyaratkan banyak kondisi terpenuhi sekaligus, dan bisa dinonaktifkan dengan menghapus field melalui proxy MITM
      • Bisa dimatikan lewat variabel lingkungan CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS
      • Karena ada syarat USER_TYPE === 'ant', fitur ini khusus pengguna internal Anthropic
    • Dalam praktiknya, pertahanan ini lebih mirip pembatasan hukum daripada mekanisme teknis murni
  • Undercover mode: mode untuk menyembunyikan identitas AI

    • undercover.ts menghapus nama kode internal Anthropic, channel Slack, dan frasa “Claude Code” saat dipakai di repositori eksternal
      • Ada frasa "There is NO force-OFF", yang berarti tidak bisa dinonaktifkan
      • Bisa dipaksa aktif lewat variabel lingkungan CLAUDE_CODE_UNDERCOVER=1
    • Pada build eksternal, fungsi ini dihapus menjadi return yang tidak bermakna, membentuk struktur satu arah
    • Akibatnya, saat karyawan Anthropic berkontribusi ke open source, tidak ada penanda bahwa kode itu ditulis AI
      • Tujuan menyembunyikan informasi internal mungkin masuk akal, tetapi efeknya adalah AI menyamar sebagai manusia
  • Frustration regex: regex untuk mendeteksi makian

    • Di userPromptKeywords.ts terdapat pola regex untuk mendeteksi keluhan dan makian pengguna
      • Mendeteksi berbagai ekspresi seperti “wtf”, “this sucks”, dan “fuck you”
    • Ini menunjukkan ironi bahwa perusahaan LLM memakai regex untuk analisis emosi,
      • tetapi dari sisi biaya dan kecepatan, regex lebih efisien daripada memanggil LLM
  • Native client attestation: attestation klien di bawah runtime JS

    • Di system.ts, permintaan API menyertakan placeholder cch=00000, yang kemudian
      • diganti Bun melalui stack HTTP native berbasis Zig menjadi hash
      • Server memverifikasi hash itu untuk memastikan apakah klien adalah biner resmi Claude Code
    • Ini menjadi dasar teknis dalam sengketa hukum OpenCode,
      • dengan verifikasi setingkat DRM agar alat pihak ketiga tidak bisa langsung memanggil API
    • Namun, jika flag NATIVE_CLIENT_ATTESTATION dimatikan atau
      • CLAUDE_CODE_ATTRIBUTION_HEADER dinonaktifkan, mekanisme ini tidak berjalan
      • Penggantian hash lewat Zig hanya bekerja pada biner Bun resmi, dan tidak berlaku di lingkungan Node
    • Belum jelas apakah server menolak hash yang salah,
      • dan ada komentar bahwa _parse_cc_header mengizinkan “unknown extra fields”
  • 250 ribu panggilan API yang terbuang

    • Menurut komentar di autoCompact.ts,
      • sekitar 250 ribu panggilan API per hari terbuang dalam loop kegagalan
      • Ada 1.279 sesi yang gagal beruntun lebih dari 50 kali, dengan maksimum 3.272 kali
    • Perbaikannya hanya 3 baris: dengan menetapkan MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3,
      • fitur auto-compact akan dimatikan setelah 3 kegagalan berturut-turut
  • KAIROS: mode agen otonom yang belum diumumkan

    • Di berbagai bagian kode ada mode gerbang fitur bernama KAIROS
      • Berdasarkan main.tsx, ini diduga sebagai fitur agen otonom
      • Mencakup skill /dream (distilasi memori malam hari), webhook GitHub, daemon latar belakang, dan refresh cron tiap 5 menit
    • Implementasinya belum selesai, tetapi fondasi agen latar belakang yang selalu berjalan sudah tersedia
  • Temuan lain

    • Easter egg April Mop: di buddy/companion.ts ada sistem pendamping bergaya Tamagotchi
      • Mencakup 18 jenis makhluk, rarity, stat RPG, dan versi ‘shiny’ dengan peluang 1%
      • Ditentukan oleh PRNG berbasis ID pengguna, dengan encoding string untuk menghindari pemeriksaan build
    • Mesin rendering terminal (ink/screen.ts, ink/optimizer.ts)
      • mengimplementasikan buffer ASCII berbasis Int32Array, metadata gaya berbasis bitmask, dan cache dengan peningkatan performa 50x
    • Pemeriksaan keamanan (bashSecurity.ts) terdiri dari 23 tahap
      • Memblokir built-in command Zsh, mencegah bypass =curl, serta menahan injeksi Unicode zero-width dan null byte
      • Ini adalah kasus langka dengan model ancaman khusus Zsh
    • Manajemen cache prompt (promptCacheBreakDetection.ts)
      • Melacak 14 vektor kerusakan cache, dan memakai ‘sticky latch’ agar cache tetap dipertahankan saat mode berganti
      • Ada komentar DANGEROUS_uncachedSystemPromptSection()
      • Mencerminkan filosofi desain yang berfokus pada penghematan biaya token
    • Koordinator multi-agent (coordinatorMode.ts)
      • memakai algoritme orkestrasi berbasis prompt, bukan kode
      • Termasuk pedoman seperti “jangan menyetujui pekerjaan yang lemah” dan “jangan mendelegasikan tanpa pemahaman”
    • Ada juga masalah kualitas kode
      • print.ts memiliki 5.594 baris, dan satu fungsi mencapai 3.167 baris
      • Menggunakan Axios untuk permintaan HTTP, bertepatan dengan insiden versi npm berbahaya baru-baru ini
  • Makna dan dampak

    • Berbeda dari SDK terbuka seperti Google Gemini CLI atau OpenAI Codex,
      • kebocoran ini menunjukkan seluruh struktur internal produk inti Anthropic
    • Kerusakan terbesar kemungkinan bukan pada kodenya sendiri, melainkan terbukanya feature flag dan roadmap
      • Fitur strategis seperti KAIROS dan Anti-distillation kini ikut terlihat oleh pesaing
    • Anthropic mengakuisisi Bun tahun lalu, dan Claude Code berjalan di atas Bun
      • Ada kemungkinan penyebabnya adalah bug source map Bun (oven-sh/bun#28001)
      • Masalah source map yang terekspos bahkan di mode produksi ini masih belum terselesaikan
    • Pada akhirnya, Anthropic pada dasarnya membocorkan produknya sendiri karena bug di toolchain buatannya sendiri
      • Seperti salah satu reaksi di Twitter: “saat kode yang ditulis AI dirilis lalu bocor karena bug yang juga dibuat AI”, sebuah ironi yang mencolok

3 komentar

 
kaydash 17 hari lalu

Pintar.

 
bbulbum 19 hari lalu

Kalau ini masalah yang terjadi saat commit dengan AI...?!

 
GN⁺ 19 hari lalu
Opini Hacker News
  • Banyak komentar yang salah paham bahwa “Undercover mode” hanyalah fitur untuk menyembunyikan informasi internal
    Prompt aslinya justru secara eksplisit mengatakan agar jangan pernah menyertakan “Claude Code” atau menyebut AI dalam pesan commit maupun deskripsi PR
    Jadi ini terlihat seperti fitur untuk bertindak seperti manusia sambil menyembunyikan identitasnya
    Hal yang paling mengkhawatirkan adalah instruksi seperti ini juga berlaku saat berkontribusi ke repositori publik
    Tautan kode terkait

    • Setiap kali Claude muncul sebagai co-author commit, rasanya memalukan
      Riwayat Git itu untuk melacak tanggung jawab dan kepemilikan, bukan tempat mencatat daftar alat yang dipakai
      Kalau begitu, apakah aku juga harus menambahkan linter atau IDE sebagai co-author di PR milikku?
    • Kurasa ada juga orang seperti aku yang sudah menambahkan instruksi semacam ini ke file CLAUDE.md
      Pada dasarnya ini masalah yang bisa diselesaikan hanya dengan satu baris konfigurasi sepele
    • Sepertinya tujuannya bukan untuk berpura-pura menjadi manusia, melainkan agar Claude tidak diejek saat kualitas kodenya buruk
      Pada akhirnya, struktur tanggung jawabnya tetap ada pada pengembang manusianya
    • Tujuan kodenya adalah mencegah kebocoran informasi, tetapi implementasi nyatanya lebih luas dari itu
      Mungkin memang sengaja dibuat luas untuk mencapai tujuan tersebut, atau mungkin ada niat tersembunyi
      Tetap saja, daripada langsung menyimpulkan bahwa ini “berpura-pura menjadi manusia”, lebih masuk akal menafsirkan kalimatnya apa adanya: “tulislah seperti pengembang manusia”
      Semakin skeptis, semakin penting untuk mengkritik berdasarkan fakta agar argumennya meyakinkan
    • Aku juga pernah melihat frasa “coauthored by Claude Code” di PR
      Sejujurnya aku tidak menginginkan hal seperti itu
  • Dengan rangkaian kebocoran Mythos belakangan ini dan tereksposnya seluruh codebase Claude Code, masalah kepercayaan makin membesar
    Tiap insiden secara terpisah memang menarik, tetapi ketika terjadi berturut-turut, rasanya seperti sebuah pola
    Pada akhirnya ini mengarah ke pertanyaan: “apakah alat seperti ini masih bisa terus dipercaya di dalam codebase?”

    • Menurutku kekhawatiran seperti itu berlebihan
      Aku tetap membayar 140 dolar untuk memakai CC
      Justru kebocoran seperti ini terasa sejalan dengan model etika Anthropic — seperti tumbuh lewat kegagalan
    • Kurasa dampaknya tidak besar
      Nilai yang sesungguhnya bukan ada pada kodenya, melainkan pada akses ke model
      Codebase-nya memang berantakan, tetapi akses model berbasis langganan tetap menarik, jadi aku masih memakai Claude Code setiap hari
    • Sejujurnya Claude sendiri terasa seperti vibe coded slop
      Di UI web maupun CC ada terlalu banyak error kecil
      Kontrol tmux juga tidak berjalan sesuai dokumentasi, dan sesi pun tidak dibersihkan dengan baik
      Meski begitu, aku tetap suka produknya — berantakan tapi tetap punya daya tarik
  • Fork anthropics/claude-code di GitHub milikku dihapus karena DMCA
    Meskipun tidak berisi kode bocoran, seluruh jaringannya (8.1K repositori) diblokir sekaligus
    Tautan pemberitahuan DMCA
    Bodoh sekali jika Anthropic merasa mereka bisa membunyikan lonceng lalu menghentikannya lagi

    • Toh biaya pengacara pasti sudah tetap ditagihkan, jadi ini cuma soal memakai tim legal
      Kebocorannya tidak bisa diputar balik, jadi secara realistis lebih baik anggap saja ini bagian dari roadmap produk
  • Aku terkejut melihat hal-hal yang dulu perusahaan sebut sebagai rahasia dagang ternyata tertulis apa adanya di source code
    Bahkan latar belakang bisnisnya juga dicantumkan di komentar
    Contoh: data operasional seperti “membuang 250 ribu panggilan API per hari” terekspos begitu saja

    • Komentar pada dasarnya adalah hack inti untuk agent coding
      Karena komentar dibaca lebih baik daripada dokumentasi, ia bisa dipakai seperti memori jangka panjang
    • Kebanyakan codebase privat besar juga seperti itu
      Hanya saja Anthropic tidak menyangka akan bocor
    • Itu komentar yang bagus untuk menjelaskan alasan sebuah pengaturan
      Dari sudut pandang pesaing, informasi itu nyaris tidak bernilai
    • Secara praktis memang masuk akal menaruh sebanyak mungkin informasi di dalam kode
      Toh mereka mungkin tidak memperkirakan akan terjadi kebocoran
    • Menaruh seluruh konteks ke dalam kode terasa seperti titik akhir desain yang ramah agen
      Tidak perlu lagi menjelaskan semuanya di dokumentasi terpisah
  • Beberapa fitur dikunci di balik kondisi process.env.USER_TYPE === 'ant'
    Artinya, instruksi untuk karyawan Anthropic lebih ketat dan lebih blak-blakan — struktur yang menarik

  • HN post aslinya sudah populer, jadi ada yang mempertanyakan apakah perlu lagi membuat blog ringkasan komentar HN

    • Blog tersebut tampak menunjukkan jejak penulisan parsial oleh AI
    • Ada juga yang berpendapat ringkasan itu diperlukan karena post aslinya terlalu berantakan
    • Budaya HN memang punya kecenderungan menjadi sangat referensial terhadap dirinya sendiri
  • Aku masih menganggap Claude Code hebat
    Tidak ada alasan bagiku untuk pindah ke OpenAI atau Gemini

    • Aku sendiri kecewa dengan Claude Code dan beralih ke Codex, tetapi untuk pengembangan web dan mobile hasilnya hampir sama bagusnya
  • Nama “Undercover mode” dan frasa “jangan menyebut Claude Code” memang terdengar menyeramkan, tetapi kalau melihat kode aslinya, tujuannya lebih ke melindungi codename internal
    Tautan source

    • Melindungi codename bisa dimengerti, tetapi menghapus jejak bahwa sesuatu dibuat AI itu maknanya berbeda
      Rasanya ini perubahan yang cukup penting
    • Intinya ada pada kalimat “tulislah pesan commit seperti pengembang manusia”
    • Karena contoh “BAD” melarang frasa terkait Claude, niatnya jelas adalah mencegah eksposur AI
    • Mungkin tujuannya agar para pengembang bisa memakai AI di proyek perusahaan tanpa terlalu mencolok
    • Dalam kontribusi open source, sepertinya memang dirancang agar Claude tidak otomatis mengungkap identitasnya sendiri
  • Ide “Anti-distillation: menanam alat palsu untuk mencegah peniruan” terdengar menarik
    Akan lucu kalau pesaing dari Tiongkok benar-benar mengimplementasikan alat palsu itu apa adanya

    • Sepertinya sebentar lagi akan muncul versi tiruan seperti zAI, Qwen, Minimax CC
      Zaman sekarang, menurutku titik persaingan bukan lagi modelnya, melainkan data dan biaya inferensi
      Aku ingin membahas topik ini lebih jauh
    • Seluruh diskusi distillation seperti ini terasa hampa
      Karena perusahaan-perusahaan ini juga membangun imperium mereka dengan mengambil data milik orang lain
    • Sebenarnya kedua belah pihak sama-sama mendistilasi (menyalin) satu sama lain
      Kualitasnya stagnan, dan perbedaan yang nyata justru ada pada kematangan tooling
      Kebocoran kali ini mungkin bisa memperkecil jarak itu
    • Alat palsu itu cuma umpan yang bisa disaring dengan regex
      Belakangan ini distillation sendiri juga makin berkurang
    • Sikap ironis seperti “kami mencuri karya orang lain, tapi kalian jangan mencuri milik kami” terasa lucu
  • Aku membagikan panduan visual yang kubuat
    ccunpacked.dev