DEV Community

Cover image for Cara Aman Berbagi Kredensial Vault dengan AI Coding Agents: Akses Bitwarden Agent
Walse
Walse

Posted on • Originally published at apidog.com

Cara Aman Berbagi Kredensial Vault dengan AI Coding Agents: Akses Bitwarden Agent

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.

Coba Apidog hari ini

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 architecture

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/
Enter fullscreen mode Exit fullscreen mode

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/
Enter fullscreen mode Exit fullscreen mode

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/
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Mulai Cepat: Pairing dan Ambil Kredensial

Jalankan listener di mesin yang punya akses ke vault, biasanya laptop Anda:

aac listen
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Contoh output:

{
  "credential": {
    "notes": null,
    "password": "alligator5",
    "totp": null,
    "uri": "https://github.com",
    "username": "example"
  },
  "domain": "github.com",
  "success": true
}
Enter fullscreen mode Exit fullscreen mode

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')
Enter fullscreen mode Exit fullscreen mode

Untuk mengambil berdasarkan ID item vault:

aac connect --id <vault-item-id> --output json
Enter fullscreen mode Exit fullscreen mode

Catatan:

  • --id dan --domain saling 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:

  1. mengambil kredensial dari provider,
  2. menyuntikkannya ke environment variable,
  3. 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
Enter fullscreen mode Exit fullscreen mode

Di dalam proses psql, environment variable berikut tersedia:

DB_PASSWORD=<credential.password>
DB_USER=<credential.username>
Enter fullscreen mode Exit fullscreen mode

Suntikkan Semua Field

aac run --domain example.com --env-all -- ./deploy.sh
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Field yang tersedia:

  • username
  • password
  • totp
  • uri
  • notes
  • domain
  • credential_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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

run-deploy.sh:

#!/usr/bin/env bash
set -euo pipefail

curl -u "$API_USER:$API_TOKEN" \
  https://prod.example.com/deploy
Enter fullscreen mode Exit fullscreen mode

Jadikan executable:

chmod +x deploy.sh run-deploy.sh
Enter fullscreen mode Exit fullscreen mode

Sekarang agen hanya perlu menjalankan:

./deploy.sh
Enter fullscreen mode Exit fullscreen mode

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()
Enter fullscreen mode Exit fullscreen mode

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/
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Workflow:

  1. Claude Code diminta menjalankan ./deploy.sh.
  2. deploy.sh memanggil aac run.
  3. Kredensial disuntikkan hanya ke run-deploy.sh.
  4. 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
Enter fullscreen mode Exit fullscreen mode

Codex dapat menjalankan:

./test-staging.sh
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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:

  1. Agen menulis perubahan kode

    Claude Code, Codex, atau Cursor membuat perubahan pada endpoint.

  2. CI menjalankan test

    Runner menjalankan skrip test dengan aac run untuk mengambil kredensial staging.

  3. 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
Enter fullscreen mode Exit fullscreen mode

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 menggunakan bw. Instal Bitwarden CLI terlebih dahulu, atau gunakan --provider example untuk 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Terminal kedua:

aac connect --provider example --domain test.com --output json
Enter fullscreen mode Exit fullscreen mode

Jika JSON kembali, jalur end-to-end sudah bekerja.

Langkah berikutnya:

  1. ganti provider demo dengan bw,
  2. bungkus skrip nyata menggunakan aac run,
  3. pindahkan workflow sensitif dari .env ke runtime injection,
  4. 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)