CodeMender adalah agen keamanan kode AI otonom yang memindai, memverifikasi, dan mem-patch kerentanan pengamanan cyber yang mendalam dalam codebase Anda. Sebelum menjalankan CodeMender, download CLI dan lakukan inisialisasi opsi ruang kerja.
Model arsitektur dan keamanan
CodeMender menggunakan model eksekusi lokal-first:
- Mesin penalaran yang dihosting: Penalaran agentic, pembuatan model ancaman, dan logika orkestrasi berjalan dengan aman di Google Cloud Gemini Enterprise Agent Platform.
- CLI eksekusi lokal: Kode sumber tidak pernah dikirim ke luar workstation atau container CI/CD Anda secara massal. Alat CLI
cmlokal menjalankan pembacaan file, pemeriksaan build lokal, dan verifikasi eksploitasi proof-of-concept (PoC) di sandbox lokal Anda, serta hanya mengirimkan cuplikan kode yang diperlukan dan hasil eksekusi alat ke backend cloud melalui Interactions API di Gemini Enterprise Agent Platform.
Penyiapan lingkungan
Untuk mulai menggunakan CodeMender, siapkan project Google Cloud Anda, download dan instal CLI, konfigurasikan kredensial dan project target, serta lakukan inisialisasi ruang kerja Anda.
Penyiapan project dan izin IAM
Sebelum mendownload CLI dan mengonfigurasi kredensial, pastikan project Google Cloud target disiapkan dengan benar menggunakan API dan izin yang diperlukan.
API yang diperlukan
Pastikan API Google Cloud berikut diaktifkan di project Anda:
- Agent Platform API (
aiplatform.googleapis.com) — Mendukung streaming dan pengelolaan sesi aktif. - Cloud Resource Manager API (
cloudresourcemanager.googleapis.com) — Memvalidasi status autentikasi pengguna dan metadata project.
Peran IAM yang telah ditetapkan dan direkomendasikan
Untuk menjalankan perintah CLI, pengguna harus diberi peran IAM berikut:
- Agent Platform User (
roles/aiplatform.user) — Memungkinkan pengguna membuat, melakukan streaming, dan mengelola sesi aktif.
Mendownload dan menginstal CodeMender CLI
Biner CodeMender CLI dihosting di Artifact Registry. Pilih tab untuk sistem operasi Anda guna mendownload dan menginstal CLI.
Linux x86_64
Untuk mendownload dan menginstal CodeMender CLI untuk Linux (x86_64):
- Download paket menggunakan salah satu metode berikut:
- gcloud CLI: Jalankan perintah berikut:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-linux-amd64.zip \ --destination=./
- curl: Jalankan perintah berikut:
curl -L -o cm-linux-amd64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-linux-amd64.zip:download?alt=media"
- gcloud CLI: Jalankan perintah berikut:
- Instal CLI:
unzip cm-linux-amd64.zip chmod +x cm sudo mv cm /usr/local/bin/cm
Linux ARM64
Untuk mendownload dan menginstal CodeMender CLI untuk Linux (ARM64):
- Download paket menggunakan salah satu metode berikut:
- gcloud CLI: Jalankan perintah berikut:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-linux-arm64.zip \ --destination=./
- curl: Jalankan perintah berikut:
curl -L -o cm-linux-arm64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-linux-arm64.zip:download?alt=media"
- gcloud CLI: Jalankan perintah berikut:
- Instal CLI:
unzip cm-linux-arm64.zip chmod +x cm sudo mv cm /usr/local/bin/cm
macOS Intel
Untuk mendownload dan menginstal CodeMender CLI untuk macOS (Intel):
- Download paket menggunakan salah satu metode berikut:
- gcloud CLI: Jalankan perintah berikut:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-darwin-amd64.zip \ --destination=./
- curl: Jalankan perintah berikut:
curl -L -o cm-darwin-amd64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-darwin-amd64.zip:download?alt=media"
- gcloud CLI: Jalankan perintah berikut:
- Instal CLI:
unzip cm-darwin-amd64.zip chmod +x cm mv cm /usr/local/bin/cm
macOS Apple silicon
Untuk mendownload dan menginstal CodeMender CLI untuk macOS (Apple silicon):
- Download paket menggunakan salah satu metode berikut:
- gcloud CLI: Jalankan perintah berikut:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-darwin-arm64.zip \ --destination=./
- curl: Jalankan perintah berikut:
curl -L -o cm-darwin-arm64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-darwin-arm64.zip:download?alt=media"
- gcloud CLI: Jalankan perintah berikut:
- Instal CLI:
unzip cm-darwin-arm64.zip chmod +x cm mv cm /usr/local/bin/cm
Windows x86_64
Untuk mendownload dan menginstal CodeMender CLI untuk Windows (x86_64):
- Download paket menggunakan salah satu metode berikut:
- gcloud CLI: Jalankan perintah berikut di PowerShell:
gcloud artifacts generic download ` --project=cmoc-prod ` --location=us ` --repository=codemender-cli-production ` --package=cm ` --version=stable ` --name=cm-windows-amd64.zip ` --destination=./
- PowerShell: Jalankan perintah berikut:
Invoke-WebRequest -Uri "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-windows-amd64.zip:download?alt=media" -OutFile cm-windows-amd64.zip
- gcloud CLI: Jalankan perintah berikut di PowerShell:
- Instal CLI:
Expand-Archive -Path cm-windows-amd64.zip -DestinationPath ./ # Move cm.exe to a permanent folder and add it to your system PATH (e.g. Environmental Variables)
Windows ARM64
Untuk mendownload dan menginstal CodeMender CLI untuk Windows (ARM64):
- Download paket menggunakan salah satu metode berikut:
- gcloud CLI: Jalankan perintah berikut di PowerShell:
gcloud artifacts generic download ` --project=cmoc-prod ` --location=us ` --repository=codemender-cli-production ` --package=cm ` --version=stable ` --name=cm-windows-arm64.zip ` --destination=./
- PowerShell: Jalankan perintah berikut:
Invoke-WebRequest -Uri "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-windows-arm64.zip:download?alt=media" -OutFile cm-windows-arm64.zip
- gcloud CLI: Jalankan perintah berikut di PowerShell:
- Instal CLI:
Expand-Archive -Path cm-windows-arm64.zip -DestinationPath ./ # Move cm.exe to a permanent folder and add it to your system PATH (e.g. Environmental Variables)
Mengonfigurasi kredensial dan project Google Cloud
Karena CodeMender CLI berinteraksi dengan mesin penalaran yang dihosting di cloud melalui Interactions API, Anda harus mengonfigurasi Google Cloud Kredensial Default Aplikasi (ADC) dan menentukan project target di lingkungan Anda.
Untuk melakukan autentikasi, jalankan perintah berikut dan ikuti perintah login:
gcloud auth application-default loginTetapkan variabel lingkungan
GOOGLE_CLOUD_PROJECTke project ID Google Cloud Anda:export GOOGLE_CLOUD_PROJECT="PROJECT_ID"Atau, konfigurasikan project gcloud CLI aktif Anda:
gcloud config set project PROJECT_IDGanti
PROJECT_IDdengan project ID Google Cloud Anda.
Melakukan inisialisasi ruang kerja
Setelah mengonfigurasi kredensial dan project target, langkah berikutnya adalah melakukan inisialisasi CodeMender di lingkungan lokal Anda. Menginisialisasi CodeMender akan menyiapkan ruang kerja lokal Anda dengan membuat file pelacakan status dan membuat setelan koneksi ke mesin penalaran yang dihosting di cloud.
Jalankan cm init dari direktori root codebase Anda untuk membuat file pelacakan status lokal dan membuat konfigurasi dasar pengukuran:
cm init
Gunakan flag --verify untuk menguji konektivitas ke mesin penalaran yang dihosting di cloud dan memverifikasi setelan ruang kerja:
cm init --verify
Memeriksa konektivitas dan izin layanan
Untuk memverifikasi kredensial, konfigurasi, keterjangkauan jaringan, dan izin IAM Anda tanpa memulai pemindaian atau mengubah ruang kerja, jalankan cm health:
cm health
Perintah cm health menjalankan empat pemeriksaan berurutan dan berhenti di lapisan pertama yang gagal. Anda dapat menjalankan cm health dari direktori mana pun, bahkan sebelum menjalankan cm init. Model ini tidak menulis ke disk atau menggunakan kuota model.
Untuk pemeriksaan preflight CI/CD otomatis atau pemantauan sintetis terjadwal, gunakan --strict untuk menggagalkan saat pemeriksaan IAM level project dilewati, dan --json untuk menghasilkan laporan JSON yang dapat dibaca mesin:
cm health --strict --json
Tabel berikut menjelaskan kode keluar cm health:
| Exit code | Lapisan | Deskripsi |
|---|---|---|
0 |
— | Semua health check lulus. |
10 |
credentials |
CLI tidak dapat memperoleh token OAuth atau Kredensial Default Aplikasi yang valid, atau server menolak token (401 Unauthorized). |
20 |
config |
File config.yaml lokal, flag --team-id, atau variabel lingkungan CM_TEAM_ID tidak valid. |
30 |
reachability |
CLI tidak dapat menjangkau endpoint API Agent Platform (misalnya, karena batasan DNS, TLS, proxy, atau Kontrol Layanan VPC). |
40 |
authorization |
Server dapat dijangkau, tetapi pemanggil atau project tidak diizinkan untuk menjalankan pemindaian CodeMender (misalnya, tidak memiliki izin roles/aiplatform.user). |
50 |
— | Health check melebihi durasi --timeout (default 30s). |
Flag berikut didukung oleh cm health:
| Flag | Default | Deskripsi |
|---|---|---|
--json |
false |
Menghasilkan satu objek JSON ke output standar, termasuk status, exit_code, backend, endpoint, location, project_id, agent_id, duration_ms, layers, dan (jika ada) warnings dan error. |
--strict |
false |
Memperlakukan peringatan health check (seperti pemeriksaan izin IAM level project yang tidak diverifikasi atau dilewati) sebagai kegagalan kode keluar 40. |
--timeout |
30s |
Menetapkan waktu tunggu keseluruhan untuk pemeriksaan health check. |
Parameter konfigurasi (config.yaml)
Tujuan utama config.yaml adalah menyelaraskan perilaku agen CodeMender dengan keamanan, batasan lingkungan, dan kebutuhan performa sistem lokal Anda.
Karena agen AI yang dihosting menjalankan perintah lokal (seperti mem-build kode, menjalankan pengujian, atau mengedit file) menggunakan klien daemon lokal Anda, file konfigurasi ini bertindak sebagai batasan yang menentukan hal yang boleh dan tidak boleh dilakukan agen.
Penggunaan
- Lokasi: Secara default, CLI membaca file ini dari
~/.codemender/config.yaml. Anda dapat mengganti direktori ruang kerja dan konfigurasi dengan menetapkan variabel lingkunganCM_HOME(misalnya,CM_HOME=/path/to/custom/dir, yang membaca/path/to/custom/dir/config.yaml). - Eksekusi: Saat Anda menjalankan perintah seperti
cm find,cm verify, ataucm fix, klien lokal akan membaca file ini untuk menyiapkan parameter keamanan, menerapkan bypass sistem, dan menentukan file atau direktori yang akan diabaikan.
Setelan default inti
Berikut arti parameter default inti:
tools.confirm_commands: true- Artinya: Secara default, CodeMender meminta konfirmasi
[Y/n]di terminal sebelum menjalankan perintah shell (run_command). Saatcm findberjalan dengan sandbox level OS diaktifkan (sandbox.enabled: true) dan isolasi jaringan default (permissive-closed), ruang kerja dipasang sebagai hanya baca dan perintah konfirmasi perintah akan otomatis dilewati. - Alasan ini menjadi setelan default: CodeMender dapat menjalankan perintah build, suite pengujian, atau skrip eksploitasi selama verifikasi dan penerapan patch. Mewajibkan konfirmasi saat ruang kerja dapat ditulis atau tidak di-sandbox membantu mencegah eksekusi perintah yang tidak diinginkan di lingkungan lokal Anda.
- Mengabaikan: Teruskan
-y(atau--yes) untuk satu operasi, atau tetapkantools.confirm_commands: falsediconfig.yamluntuk pipeline CI/CD non-interaktif.
- Artinya: Secara default, CodeMender meminta konfirmasi
tools.confirm_writes: true- Artinya: Meminta konfirmasi
[Y/n]di terminal sebelum agen CodeMender menulis atau mengubah file di disk (write_to_filedansearch_and_replace). - Alasan ini menjadi setelan default: Mewajibkan konfirmasi manual mencegah agen melakukan modifikasi spekulatif atau yang tidak diinginkan pada file sumber Anda selama
cm fixataucm verify. Hanya tetapkan ini kefalse(atau teruskan-y/--yes) saat berjalan di lingkungan terisolasi dan sekali pakai atau pipeline CI/CD otomatis.
- Artinya: Meminta konfirmasi
execution.interactive_mode: true- Artinya: Mengaktifkan perintah terminal interaktif selama eksekusi alat. Tetapkan ini ke
false(atau teruskan-y/--yes) di lingkungan CI/CD headless tanpa terminal yang terpasang.
- Artinya: Mengaktifkan perintah terminal interaktif selama eksekusi alat. Tetapkan ini ke
scan.extensions.include: [".py", ".java", ".go", ".js", ".jsx", ".mjs", ".cjs", ".ts", ".tsx", ".c", ".cc", ".cpp", ".cxx", ".h", ".hh", ".hpp", ".hxx", ".inl", ".ipp", ".cs", ".rs", ".kt", ".kts", ".rb", ".php", ".sol", ".tf", ".hcl"]- Artinya: Menentukan daftar eksplisit ekstensi file yang Anda izinkan untuk diserap dan dianalisis oleh CodeMender saat memindai ruang kerja Anda. CodeMender akan otomatis melewati file apa pun di repositori Anda dengan ekstensi yang tidak ditentukan dalam daftar ini.
- Alasan ini menjadi default: Daftar ini secara default berisi bahasa pemrograman utama untuk memaksimalkan efisiensi pemindaian dan mencegah agen membuang-buang waktu dan token pada file teks yang tidak relevan, artefak build, atau file biner. Namun, karena aplikasi modern sering kali menyematkan kerentanan dalam konfigurasi deployment atau alat otomatisasi, Anda dapat memperluas daftar default ini secara manual di
config.yamluntuk menyertakan file konfigurasi, format skrip, dan file IaC (misalnya, skrip shell, XML, YAML, properti, dan file JSON) agar CodeMender tidak mengabaikannya secara diam-diam.
scan.exclude_dirs: ["node_modules", "vendor", "dist", "/target", "/obj", "/build", ".gradle"]- Artinya: CodeMender akan melewati direktori ini selama pemindaian ruang kerja dan analisis kode. Entri dengan awalan
/(seperti/target,/obj, dan/build) hanya cocok di root pemindaian, sehingga paket sumber bertingkat dengan nama tersebut tidak akan dilewati. - Alasan setelan ini menjadi default: Dependensi atau folder build yang besar memicu latensi dan penalti token yang sangat besar. Dengan mengecualikan file ini secara default, performa tinggi dan waktu respons yang cepat akan tetap terjaga. Anda dapat menyesuaikan daftar ini di
config.yamluntuk menyertakan atau mengecualikan direktori tertentu sesuai dengan struktur project Anda.
- Artinya: CodeMender akan melewati direktori ini selama pemindaian ruang kerja dan analisis kode. Entri dengan awalan
project_paths: []- Artinya: Daftar jalur direktori yang dapat diakses (baca/tulis) oleh CodeMender selama eksekusi alat.
- Alasan ini menjadi default: Secara default, kolom ini kosong, yang membatasi agen ke root project yang mencakup (atau direktori target pemindaian). Jika proses build atau pengujian Anda memerlukan akses ke file di luar root project, tambahkan jalur tersebut di sini atau teruskan
--allow-all-pathsuntuk satu operasi. Penulisan ke.git,.hg, dan.codemenderselalu diblokir. - Direktori artefak: Agen juga dapat menulis ke direktori artefak per sesi (
~/.codemender/artifacts/<session_id>/, atau yang setara di bagian$CM_HOME). - File sementara: Jika sandbox diaktifkan, direktori
/tmphost akan selalu diblokir, meskipun Anda menambahkan/tmpkeproject_paths. Alat yang mematuhiTMPDIRakan menggunakan direktori sementara di dalam direktori artefak.
sandbox:- Artinya: Blok konfigurasi untuk lingkungan sandbox tingkat proses.
- Sub-parameter:
enabled: true: (Boolean) Mengaktifkan atau menonaktifkan sandbox. Jika Anda menetapkan parameter ini ketrue(default), agen akan menjalankan alat di dalam sandbox lokal. Jika Anda menetapkannya kefalse(atau meneruskan--sandbox=false), agen akan menjalankan alat langsung di sistem host tanpa isolasi tingkat OS.mounts: (Objek)target_dir: ".": (String) Direktori yang akan dipasang sebagai ruang kerja aktif di dalam sandbox. CLI me-resolve jalur relatif terhadap root ruang kerja.
network: (Objek)profile: "permissive-closed": (String) Profil akses jaringan keluar di dalam sandbox. Pemberian izin terperinci untuk domain atau pola URL tertentu belum didukung. Profil yang didukung:permissive-closed(Default): Isolasi jaringan lengkap; sandbox memblokir semua koneksi keluar.permissive-open: Mengizinkan akses jaringan keluar penuh.
security:- Artinya: Blok konfigurasi untuk kebijakan keamanan.
- Sub-parameter:
protected_files: []: (Daftar String) File atau direktori tambahan di sistem host yang ingin Anda pasang sebagai hanya baca di dalam sandbox untuk melindunginya dari modifikasi. Mendukung perluasan jalur (~) dan karakter pengganti (*). Meskipunprotected_fileskosong, sandbox selalu melindungi.git/hooks,.git/config,.hg/hgrc, dan.codemendersebagai hanya baca dan mengecualikan direktori kredensial umum (~/.ssh,~/.gnupg,~/.aws,~/.config/gcloud,~/.config/gh,~/.kube,~/.docker).
model: "gemini-3.8-flash"- Artinya: Mesin kecerdasan default yang mendukung reasoning loop backend.
- Alasan model ini menjadi default:
gemini-3.8-flashmenawarkan keseimbangan optimal antara kecepatan, biaya, dan penalaran analitis yang diperlukan untuk menyarankan patch. (Pengguna dapat menggantinya kegemini-4-argon(Gemini 4 Argon) untuk penalaran yang lebih mendalam dan kompleks jika diperlukan).
vcs: { type: "git" }- Artinya: Menentukan jenis sistem kontrol versi yang digunakan project Anda melalui kunci
vcs. Jika Anda tidak mengonfigurasinya, alat ini akan mencoba mengidentifikasi repositori Git atau Mercurial secara otomatis. Jika Anda menetapkanvcskenone, CLI akan menampilkan peringatan, tetapi melanjutkan eksekusi tanpa fungsi VCS. CodeMender mengandalkan setelan ini untuk mengelola perbaikan keamanan spekulatif, melacak modifikasi codebase, dan berintegrasi dengan repositori lokal Anda. - Alasan ini menjadi default: CodeMender mendukung konfigurasi Git, Mercurial, atau VCS kustom. Git adalah default karena merupakan standar industri untuk pelacakan kontrol versi, yang memastikan integrasi diff yang lancar dan keamanan rollback.
- Artinya: Menentukan jenis sistem kontrol versi yang digunakan project Anda melalui kunci
build: { command: "make build && make test" }- Artinya: Menentukan perintah shell yang tepat yang dijalankan CodeMender untuk mengompilasi dan membangun project Anda, serta menjalankan pengujian unit dan regresi.
- Alasan ini menjadi setelan default: Menetapkan perintah build dan pengujian sangat penting untuk alur kerja verifikasi. Hal ini memungkinkan CodeMender mengompilasi project Anda dan menjalankan suite pengujian yang ada di lingkungan sandbox yang terisolasi untuk membuktikan bahwa patch keamanan yang dihasilkan berhasil mengurangi kerentanan tanpa merusak logika aplikasi yang ada.
Kebijakan perintah (command_policy.yaml)
Selain sandbox level OS, Anda dapat menentukan daftar tolak perintah di ~/.codemender/command_policy.yaml (global) dan <project>/.codemender/command_policy.yaml (khusus project). Jika kedua file ada, CodeMender akan menggabungkan aturannya.
Saat pertama kali dijalankan, CodeMender akan membuat template yang dijadikan sebagai komentar di ~/.codemender/command_policy.yaml. Anda dapat menghapus tanda komentar atau menambahkan aturan di bawah dua kunci:
block: Daftar nama biner yang akan diblokir di semua pipeline shell, subshell, dan penggantian perintah (misalnya,curl,wget,ssh,sudo,rm).block_patterns: Daftar ekspresi reguler yang dicocokkan dengan setiap segmen perintah (misalnya,'\bgit\s+(push|commit|rebase|reset\s+--hard|clean)\b').
Untuk mengabaikan penerapan command_policy.yaml untuk satu pemanggilan perintah, teruskan flag --allow-all-commands.
Sandbox eksekusi
Untuk melindungi workstation Anda dari modifikasi file yang tidak diinginkan atau efek samping alat yang tidak terduga, CodeMender CLI berjalan di dalam sandbox tingkat OS secara default. Anda dapat menonaktifkan sandbox secara persisten di konfigurasi atau mengabaikannya per perintah menggunakan flag CLI.
Meskipun sandboxing ini menawarkan lapisan pertahanan awal di workstation Anda, perlindungan keamanannya lebih lemah daripada menjalankan agen di virtual machine (VM) yang sepenuhnya terisolasi:
- Linux: Menggunakan namespace kernel (
CLONE_NEWNS,CLONE_NEWUSER, dll.) dan filterseccompuntuk mengisolasi direktori pemasangan dan membatasi panggilan sistem. - macOS: Menggunakan mekanisme
sandbox-exec(Seatbelt) bawaan. - Windows (Eksperimental): Menggunakan isolasi
AppContainerdan Daftar Kontrol Akses (ACL). Sandboxing di Windows bersifat eksperimental dan mungkin memerlukan hak istimewa administratif atau tidak kompatibel dengan beberapa konfigurasi sistem.
Perilaku sandbox
Saat sandbox aktif:
- Isolasi sistem file: Agen hanya dapat mengakses file dalam direktori yang diizinkan. Selama
cm find, ruang kerja dan root yang diizinkan dipasang sebagai hanya baca, sehingga perintah hanya dapat menulis ke direktori artefak per sesi. Di semua perintah (termasukcm verifydancm fix),.git/hooks,.git/config,.hg/hgrc, dan.codemenderdipasang sebagai hanya baca sehingga perintah dalam sandbox tidak dapat menginstal hook Git atau Mercurial atau mengubah konfigurasi CodeMender. - Isolasi jaringan: Sandbox memblokir akses jaringan keluar secara default (
sandbox.network.profile: "permissive-closed"). Hal ini mencegah agen (atau alat build yang dipanggilnya) membuat koneksi eksternal yang tidak terduga atau mengirimkan data ke luar ruang kerja. - Isolasi kredensial dan secret: Sandbox mengecualikan direktori kredensial host umum (
~/.ssh,~/.gnupg,~/.aws,~/.config/gcloud,~/.config/gh,~/.kube,~/.docker, dan lainnya) dan menghapus variabel lingkungan yang cocok dengan pola secret (*_TOKEN,*_SECRET,*_KEY,*_PASSWORD,*_CREDENTIALS, dan akhiran serupa) sebelum menjalankan perintah.
Akses jaringan selama build dan validasi
Karena sandbox mengaktifkan isolasi jaringan secara default (sandbox.network.profile ditetapkan ke permissive-closed secara default), agen tidak dapat mengakses internet selama eksekusi alat.
Hal ini menimbulkan batasan untuk project yang memerlukan pengambilan dependensi eksternal selama langkah build atau verifikasi (misalnya, menjalankan npm install, pip install, atau go get sebagai bagian dari build.command). Jika proses build Anda mencoba mengakses layanan web eksternal, proses tersebut akan gagal.
Menangani dependensi jaringan
Jika project Anda memerlukan akses jaringan untuk build atau pengujian, Anda memiliki opsi berikut:
- Mengambil dependensi terlebih dahulu: Instal semua dependensi yang diperlukan pada sistem host sebelum menjalankan perintah
cm, sehingga perintah build tidak memerlukan akses jaringan. Mengaktifkan akses jaringan di sandbox: Ubah profil jaringan di
config.yamlAnda untuk mengizinkan koneksi keluar:sandbox: network: profile: "permissive-open"Menonaktifkan sandbox untuk satu operasi: Jalankan perintah dengan flag
--sandbox=falseuntuk menonaktifkan sandbox tingkat OS (termasuk isolasi jaringan) untuk eksekusi tersebut.
Konfigurasi sandbox
Anda dapat mengonfigurasi dan mengontrol sandbox dan batas keamanan menggunakan opsi berikut:
- Konfigurasi persisten (
config.yamldancommand_policy.yaml): Sesuaikan perilaku sandbox, pemasangan sistem file, akses jaringan, dan daftar penolakan perintah diconfig.yamldancommand_policy.yaml. Lihat Parameter konfigurasi dan Kebijakan perintah untuk mengetahui detailnya. - Mengontrol sandbox level OS (
--sandbox): Aktifkan atau nonaktifkan sandbox level OS secara eksplisit untuk satu operasi dengan meneruskan--sandbox=trueatau--sandbox=falsekecm find,cm verify,cm fix, ataucm session resume. - Mengabaikan batas jalur (
--allow-all-paths): Menonaktifkan pemeriksaan batas jalur ruang kerja untuk satu operasi sehingga alat agen dapat mengakses jalur di luar root project danproject_pathsyang dikonfigurasi (gabungkan dengan--sandbox=falseuntuk mengakses jalur host yang tidak dipasang di dalam sandbox). - Kebijakan perintah bypass (
--allow-all-commands): Menonaktifkan penerapan daftar yang tidak diizinkancommand_policy.yamluntuk satu operasi.
Memilih tingkat isolasi
Bergantung pada persyaratan keamanan dan lingkungan pengembangan, Anda dapat memilih tingkat isolasi yang sesuai untuk menjalankan CodeMender CLI.
| Metode | Deskripsi | Kelebihan | Kekurangan |
|---|---|---|---|
| Sandbox bawaan (level OS) | Diaktifkan secara default; Anda dapat menonaktifkannya di file config.yaml atau mengabaikannya menggunakan flag CLI. Menggunakan fitur OS bawaan (namespace/seccomp, sandbox-exec, AppContainer (Eksperimental)) untuk mengisolasi eksekusi. |
Ringan; tanpa overhead startup; akses langsung ke alat ruang kerja lokal dengan kontrol yang mendetail. Direkomendasikan untuk pengembangan lokal sehari-hari. | Keamanan bergantung pada fitur kernel OS; kurang terisolasi dibandingkan VM penuh; dukungan Windows bersifat eksperimental dan mungkin memerlukan hak istimewa administratif atau tidak kompatibel dengan beberapa konfigurasi. |
| Container | Menjalankan agen dalam container (misalnya, Docker). | Isolasi yang baik; lingkungan yang terstandardisasi. | Memerlukan runtime container; dapat menjadi berat; tidak mengizinkan interaksi langsung dengan alat di komputer lokal. |
| VM Lengkap | Menjalankan agen di VM khusus. | Keamanan maksimum; isolasi penuh. | Overhead resource tinggi; startup lambat; tidak mengizinkan interaksi langsung dengan alat di komputer lokal. |
Telemetri
Untuk membantu kami memantau dan meningkatkan kualitas produk, kami mengumpulkan data telemetri anonim melalui CLI. Kami sepenuhnya menganonimkan semua data yang dikumpulkan, yang mencakup metrik penggunaan dasar dan diagnostik performa. Telemetri tidak pernah mengumpulkan atau mengirimkan kode sumber, konten file, temuan, patch, atau identitas pengguna.
Secara default, telemetri diaktifkan. Jika Anda ingin menonaktifkan telemetri, tetapkan variabel lingkungan CM_TELEMETRY_OPT_OUT ke 1 atau true.
Mengupdate CLI
CodeMender memiliki mekanisme update bawaan untuk memastikan Anda menjalankan CLI versi terbaru.
Pemeriksaan update otomatis
Secara default, CodeMender CLI otomatis memeriksa update di latar belakang saat Anda menjalankan perintah:
- Throttling: Untuk meminimalkan overhead, pemeriksaan otomatis berjalan maksimal sekali setiap 24 jam.
- Memerlukan Terminal Interaktif (TTY): CLI hanya memeriksa update dan meminta Anda saat berjalan di terminal interaktif. Di lingkungan non-interaktif (seperti pipeline atau skrip CI/CD), pemeriksaan akan dilewati dan peringatan akan dicatat ke
stderrmaksimal sekali sehari. - Meminta: Jika versi baru tersedia, Anda akan diminta di
stderr:none 🆕 A new CodeMender release is available: 1.1.0 Update now? (y/N):Jika Anda memilih ya (yatauyes), CodeMender akan mendownload update, mengganti biner, dan keluar. Anda harus menjalankan perintah lagi untuk mengeksekusinya dengan versi baru. Jika Anda memilih tidak, update akan dilewati dan perintah asli Anda akan dijalankan. - Toleransi Offline: Jika Anda offline atau repositori rilis tidak dapat dijangkau, pemeriksaan akan gagal tanpa menampilkan pesan error dan CodeMender akan terus menjalankan perintah Anda.
- Melewati: Anda dapat melewati pemeriksaan update otomatis dengan meneruskan flag
--yesatau-yke perintah apa pun.
Update manual (cm update)
Anda dapat memaksa CodeMender untuk segera memeriksa dan menerapkan update dengan menjalankan perintah update:
cm update
Perintah cm update:
- Mengabaikan throttling 24 jam.
- Mendownload dan menerapkan update segera tanpa perintah (non-interaktif).
- Tidak memerlukan terminal interaktif (aman untuk skrip dan manajemen konfigurasi).
Jika CLI diinstal di direktori sistem yang memerlukan izin yang ditingkatkan, jalankan update dengan sudo:
sudo cm update