Jika Anda menggunakan Claude Code, Codex, atau Cursor untuk pekerjaan yang menyentuh API nyata, Anda perlu memberi agen akses ke kredensial tanpa membocorkannya ke prompt, file .env, atau log. Menempelkan API key ke chat membuatnya hidup di context window model. Menaruh rahasia di .env juga berisiko karena tool shell agen dapat membacanya. Bitwarden Agent Access menawarkan pola yang lebih aman: kredensial diambil saat runtime, dibatasi scope-nya, lalu disuntikkan ke proses yang membutuhkan.
Proyek open source Bitwarden, Agent Access, menyediakan protokol berbagi kredensial, CLI (aac), serta SDK Rust dan Python. Tujuannya: membuat tunnel terenkripsi antara password manager dan proses jarak jauh seperti agen AI, CI runner, atau skrip lokal. Agen hanya menerima rahasia yang dibutuhkan untuk satu domain atau satu item vault, bukan akses penuh ke vault Anda.
Panduan ini membahas instalasi, penggunaan aac connect, penggunaan aac run untuk environment injection, integrasi dengan Claude Code, Codex, Cursor, dan bagaimana pola ini melengkapi praktik keamanan kredensial seperti yang dibahas di Cara Mengamankan Kredensial API Agen AI.
Apa Itu Agent Access
Agent Access adalah protokol terbuka dan implementasi referensi dari Bitwarden. CLI-nya, aac, membuat tunnel terenkripsi end-to-end menggunakan protokol Noise.
Modelnya sederhana:
- Provider: mesin atau proses yang punya akses ke vault.
- Consumer: agen, skrip, CI runner, atau proses lain yang butuh kredensial.
- Credential request: consumer meminta kredensial berdasarkan domain atau ID item vault.
- Scoped response: provider hanya mengirim kredensial yang diizinkan.
Consumer tidak melihat seluruh vault. Provider juga tidak melihat bagaimana kredensial dipakai oleh consumer. Audit trail tersedia di kedua sisi.
Agent Access masih dalam pratinjau awal. README proyek menyatakan bahwa API dan protokol dapat berubah, serta tidak merekomendasikan memasukkan kredensial sensitif langsung ke LLM atau agen AI.
Pola yang lebih aman adalah menggunakan aac run, yaitu mengambil rahasia saat runtime dan menyuntikkannya sebagai environment variable ke proses anak.
Mengapa Ini Penting
Agen pengkodean AI kini tidak hanya membaca kode. Claude Code, Codex, Cursor, dan tool serupa dapat:
- membaca repositori,
- menjalankan test,
- memanggil API,
- menjalankan deployment,
- membuka PR,
- memodifikasi workflow CI.
Semua aktivitas itu sering membutuhkan kredensial.
Insiden kunci API Postman yang terekspos menunjukkan bahwa hygiene kredensial sudah sulit ketika hanya manusia yang terlibat. Dengan agen AI, risikonya bertambah karena agen dapat menjalankan perintah dan membaca file.
Prinsip yang lebih aman bukan “percaya agen lebih banyak”, tetapi:
Berikan agen akses sesedikit mungkin, hanya saat dibutuhkan, dan hanya untuk proses yang tepat.
Agent Access menerapkan ini di level protokol:
- kredensial dibatasi per domain atau item vault,
- data dienkripsi saat transit,
- rahasia diambil saat runtime,
- rahasia hilang saat proses selesai.
Untuk lanskap tool yang lebih luas, lihat juga Alat Manajemen Kunci API.
Instalasi
Pilih binary sesuai platform Anda.
macOS Apple Silicon
curl -L https://github.com/bitwarden/agent-access/releases/latest/download/aac-macos-aarch64.tar.gz | tar xz
sudo mv aac /usr/local/bin/
macOS Intel
curl -L https://github.com/bitwarden/agent-access/releases/latest/download/aac-macos-x86_64.tar.gz | tar xz
sudo mv aac /usr/local/bin/
Linux x86_64
curl -L https://github.com/bitwarden/agent-access/releases/latest/download/aac-linux-x86_64.tar.gz | tar xz
sudo mv aac /usr/local/bin/
Windows x86_64
Unduh aac-windows-x86_64.zip dari halaman rilis terbaru, lalu ekstrak ke direktori yang ada di PATH.
Verifikasi instalasi:
aac --help
Jika Bitwarden CLI (bw) juga tersedia di PATH, aac akan menggunakannya sebagai provider kredensial default.
Untuk eksperimen tanpa vault Bitwarden, gunakan provider demo:
aac --provider example --help
Mulai Cepat: Pairing dan Ambil Kredensial
Jalankan listener di mesin yang punya akses ke vault, biasanya laptop Anda:
aac listen
Perintah ini akan mencetak pairing token.
Di sisi consumer, misalnya terminal lain, remote machine, atau CI runner, gunakan token tersebut untuk meminta kredensial berdasarkan domain:
aac connect --token <pairing-token> --domain github.com --output json
Contoh output:
{
"credential": {
"notes": null,
"password": "alligator5",
"totp": null,
"uri": "https://github.com",
"username": "example"
},
"domain": "github.com",
"success": true
}
Skrip Anda dapat membaca JSON tersebut dan memakai field yang dibutuhkan.
Contoh dengan jq:
PASSWORD=$(aac connect --token <pairing-token> --domain github.com --output json | jq -r '.credential.password')
USERNAME=$(aac connect --token <pairing-token> --domain github.com --output json | jq -r '.credential.username')
Untuk mengambil berdasarkan ID item vault:
aac connect --id <vault-item-id> --output json
Catatan:
-
--iddan--domainsaling eksklusif. - Pilih salah satu.
- Jika item vault memiliki TOTP, nilainya dikirim melalui payload yang sama.
Gunakan aac run untuk Environment Injection
aac connect berguna jika skrip Anda siap memproses JSON. Untuk workflow agen dan CI, pola yang lebih aman adalah aac run.
aac run melakukan tiga hal:
- mengambil kredensial dari provider,
- menyuntikkannya ke environment variable,
- menjalankan proses anak.
Rahasia tidak ditulis ke stdout, tidak disimpan ke disk, dan tidak perlu muncul di prompt agen.
Suntikkan Field Tertentu
aac run --domain example.com \
--env DB_PASSWORD=password \
--env DB_USER=username \
-- psql
Di dalam proses psql, environment variable berikut tersedia:
DB_PASSWORD=<credential.password>
DB_USER=<credential.username>
Suntikkan Semua Field
aac run --domain example.com --env-all -- ./deploy.sh
Dengan --env-all, field kredensial disuntikkan dengan prefix AAC_.
Gabungkan --env-all dan Mapping Custom
aac run --domain example.com \
--env-all \
--env CUSTOM_PW=password \
-- ./deploy.sh
Field yang tersedia:
usernamepasswordtotpurinotesdomaincredential_id
Pola ini adalah pendekatan yang direkomendasikan untuk agen AI. Agen cukup melihat dan menjalankan perintah seperti:
aac run --domain api.stripe.com --env-all -- ./deploy.sh
Agen tidak perlu melihat nilai API key. Jika model bertanya “berapa nilai $STRIPE_API_KEY?”, jawabannya tetap tidak tersedia untuk model karena rahasia hanya hidup di environment proses anak.
Ini selaras dengan prinsip isolasi di Cara Mengamankan Kredensial API Agen AI.
Contoh Skrip Deployment
Struktur sederhana:
project/
deploy.sh
run-deploy.sh
deploy.sh:
#!/usr/bin/env bash
set -euo pipefail
aac run --domain prod.example.com \
--env API_TOKEN=password \
--env API_USER=username \
-- ./run-deploy.sh
run-deploy.sh:
#!/usr/bin/env bash
set -euo pipefail
curl -u "$API_USER:$API_TOKEN" \
https://prod.example.com/deploy
Jadikan executable:
chmod +x deploy.sh run-deploy.sh
Sekarang agen hanya perlu menjalankan:
./deploy.sh
Kredensial tidak perlu ditaruh di prompt, .env, atau file konfigurasi repository.
SDK Python dan Rust
Jika Anda ingin menyematkan Agent Access langsung ke aplikasi atau tool internal, gunakan SDK.
Python
from agent_access import RemoteClient
client = RemoteClient("python-remote")
client.connect(token="ABC-DEF-GHI")
cred = client.request_credential("example.com")
print(cred.username, cred.password)
client.close()
Binding Python didukung PyO3, sehingga implementasi protokol tetap memakai Rust di bawahnya.
Gunakan pendekatan ini jika aplikasi Anda perlu melakukan request kredensial langsung, bukan lewat subprocess CLI.
Rust
SDK Rust mengekspos interface RemoteClient yang sama sebagai pustaka kelas satu. Implementasi referensi tersedia di repository pada:
examples/rust-remote/
Cocok untuk:
- CLI internal,
- build runner,
- service ringan,
- binary yang perlu distribusi mandiri.
Untuk tim yang sudah memakai tool API dan secret manager, pola ini dapat berjalan berdampingan dengan integrasi seperti HashiCorp Vault atau Azure Key Vault.
Agent Access bukan pengganti penuh untuk secret manager enterprise. Ia lebih cocok untuk celah antara laptop developer, agen AI, dan CI runner.
Integrasi dengan Agen Pengkodean AI
Claude Code
Bungkus task sensitif dalam skrip yang memanggil aac run.
Contoh:
# deploy.sh
#!/usr/bin/env bash
set -euo pipefail
aac run --domain prod.example.com --env-all -- ./run-deploy.sh
Workflow:
- Claude Code diminta menjalankan
./deploy.sh. -
deploy.shmemanggilaac run. - Kredensial disuntikkan hanya ke
run-deploy.sh. - Claude tidak melihat nilai rahasia.
Pola yang sama dapat dibawa ke CI. Dalam integrasi seperti Claude Code GitHub Actions, runner dapat menginstal aac, melakukan pairing dengan provider vault Bitwarden, lalu menjalankan job dengan kredensial scoped.
OpenAI Codex
Untuk Codex CLI, gunakan skrip wrapper yang sama.
Contoh:
# test-staging.sh
#!/usr/bin/env bash
set -euo pipefail
aac run --domain staging.example.com \
--env STAGING_TOKEN=password \
-- npm run test:staging
Codex dapat menjalankan:
./test-staging.sh
Model melihat perintah, bukan token.
Untuk konteks penggunaan Codex yang lebih luas, lihat Codex dari ponsel Anda.
Cursor
Untuk terminal Cursor dan Composer workflow, gunakan skrip wrapper yang sama:
aac run --domain dev.example.com --env-all -- npm run e2e
Karena Cursor sering dipakai secara lokal, listener biasanya berjalan di mesin yang sama. Ini membuat setup awal lebih sederhana:
# terminal 1
aac listen
# terminal 2
aac connect --token <pairing-token> --domain dev.example.com --output json
Setelah pairing berfungsi, pindahkan pemanggilan ke skrip proyek.
OpenClaw
Agent Access menyertakan skill OpenClaw resmi melalui file SKILL.md di repository.
Jika tim Anda menggunakan skill bergaya OpenClaw, ini bisa menjadi jalur integrasi yang lebih bersih karena skill dapat memahami bentuk protokol, mengambil kredensial, lalu meneruskannya ke tool downstream.
Untuk manajemen kredensial di ekosistem tersebut, lihat Panduan kunci API OpenClaw.
Model Keamanan
Ada tiga properti penting:
1. Enkripsi end-to-end
Traffic antara consumer dan provider dienkripsi dengan Noise Protocol Framework, keluarga handshake yang juga digunakan oleh sistem seperti WireGuard dan Signal.
2. Kredensial dibatasi scope-nya
Consumer hanya meminta satu domain atau satu ID item vault. Consumer tidak bisa menelusuri seluruh isi vault.
3. Tidak ada rahasia di disk consumer secara default
Dengan aac run, rahasia disalurkan ke environment process anak. Nilainya tidak perlu:
- ditulis ke file,
- dicetak ke stdout,
- masuk ke shell history,
- disalin ke prompt LLM.
Namun, Agent Access tidak menyelesaikan semua risiko.
Yang tetap perlu Anda mitigasi:
- Consumer yang disusupi: jika agen atau skrip jahat, kredensial scoped tetap bisa disalahgunakan.
- Provider yang disusupi: jika vault Bitwarden Anda bocor, lapisan ini tidak cukup.
- Rahasia yang ditempel langsung ke prompt: jika Anda menyalin token ke chat, protokol apa pun tidak dapat menyelamatkannya.
Gunakan aac run sebagai batas proses, bukan sebagai izin untuk membagikan rahasia ke model.
Pola Workflow: Agen Menulis Kode, Apidog Menguji API
Workflow praktis untuk tim API:
Agen menulis perubahan kode
Claude Code, Codex, atau Cursor membuat perubahan pada endpoint.CI menjalankan test
Runner menjalankan skrip test denganaac rununtuk mengambil kredensial staging.Apidog memverifikasi kontrak
Apidog menjalankan pengujian kontrak OpenAPI sebagai langkah CI terpisah.
Contoh skrip:
#!/usr/bin/env bash
set -euo pipefail
aac run --domain staging.example.com \
--env API_TOKEN=password \
-- npm run test:contract
Hasilnya:
- agen mengirimkan kode,
- kontrak API tetap tervalidasi,
- kredensial tidak perlu muncul di prompt,
- CI tetap dapat mengakses rahasia secara scoped.
Untuk strategi pengujian agen yang memanggil API, lihat Cara menguji agen AI yang memanggil API Anda.
Batasan dan Peringatan
Masih pratinjau awal
API dan protokol dapat berubah. Hindari mengikat workflow produksi kritis ke versi awal tanpa rencana migrasi.Bitwarden CLI diperlukan secara default
Provider default menggunakanbw. Instal Bitwarden CLI terlebih dahulu, atau gunakan--provider exampleuntuk demo.Belum ada file konfigurasi utama
Agent Access saat ini terutama digerakkan oleh flag. Untuk pemanggilan berulang, bungkus dalam skrip.Jangan tempel rahasia ke prompt LLM
Agent Access membantu menghindari pola itu. Ia tidak bisa memperbaiki rahasia yang sudah Anda masukkan langsung ke chat.
FAQ
Apakah Agent Access gratis?
Ya. CLI, SDK, dan protokolnya open source di bawah organisasi GitHub Bitwarden. Jika memakai Bitwarden sebagai vault, biaya Bitwarden tetap mengikuti paket yang Anda gunakan.
Apakah bisa dipakai dengan password manager selain Bitwarden?
Protokolnya dirancang vendor-neutral. Implementasi referensi saat ini menyediakan dukungan Bitwarden dan provider contoh. Vendor lain dapat membuat provider sendiri.
Bisakah dipakai tanpa password manager?
Untuk pengujian, ya:
aac connect --provider example --domain test.com --output json
Untuk produksi, gunakan provider nyata seperti Bitwarden.
Apakah consumer perlu akses jaringan?
Ya. Consumer perlu menjangkau listener provider. Untuk setup lokal, provider dan consumer bisa berjalan di host yang sama.
Apa bedanya dengan file .env?
File .env berada di disk, mudah tidak sengaja masuk repository, dan bisa dibaca oleh proses yang dijalankan agen.
Dengan aac run, rahasia hanya tersedia di memory process anak, dibatasi scope-nya, dan hilang saat proses selesai.
Apakah ini menggantikan HashiCorp Vault atau AWS Secrets Manager?
Tidak. Secret manager enterprise tetap lebih tepat untuk rahasia service-to-service skala besar. Agent Access mengisi celah untuk laptop developer, agen AI, skrip lokal, dan CI runner.
Apakah Anthropic, OpenAI, atau vendor agen lain sudah mengintegrasikannya langsung?
Belum ada pengumuman. Model integrasi saat ini adalah membungkus skrip dengan aac run.
Di mana melaporkan bug atau berkontribusi?
Gunakan repository GitHub. Issue, PR, dan diskusi protokol dilakukan di sana.
Coba Sekarang
Mulai dari loop paling kecil.
Terminal pertama:
aac listen
Terminal kedua:
aac connect --provider example --domain test.com --output json
Jika JSON kembali, jalur end-to-end sudah bekerja.
Langkah berikutnya:
- ganti provider demo dengan
bw, - bungkus skrip nyata menggunakan
aac run, - pindahkan workflow sensitif dari
.envke runtime injection, - hentikan kebiasaan menempel API key ke agen AI.
Pasangkan Agent Access dengan Apidog untuk sisi pengujian API. Pembagiannya jelas: vault menyimpan rahasia, Apidog menguji kontrak, agen mengirimkan kode, dan kredensial tidak perlu keluar sebagai teks biasa.

Top comments (0)