Pendahuluan
Saya menemui kasus menarik saat menggunakan OpenCode sebagai AI coding agent. Repository sudah dikonfigurasi menggunakan SSH, tetapi setiap kali agent mencoba melakukan git push, proses selalu gagal. Setelah ditelusuri, ternyata penyebabnya bukan Git maupun GitHub, melainkan private key yang menggunakan passphrase sementara agent tidak mendukung input interaktif.
Saat menggunakan AI coding agent seperti OpenCode atau agent berbasis CLI lainnya, proses otomatis seperti git push terkadang gagal meskipun konfigurasi SSH sudah benar. Salah satu penyebab yang cukup sering ditemui adalah penggunaan SSH private key yang dilindungi dengan passphrase.
Pada komputer yang digunakan sehari-hari, kondisi ini biasanya tidak menjadi masalah karena SSH akan meminta pengguna memasukkan passphrase secara interaktif. Namun, berbeda halnya ketika perintah dijalankan oleh AI agent yang tidak memiliki mekanisme untuk menerima input interaktif.
Artikel ini membahas penyebab masalah tersebut serta solusi yang dapat diterapkan.
Studi Kasus
Sebuah AI agent diminta untuk melakukan perubahan kode dan menjalankan:
git push origin main
Namun proses gagal dengan pesan bahwa autentikasi SSH tidak dapat dilakukan. Setelah dilakukan pengecekan, diketahui bahwa:
- Repository menggunakan autentikasi SSH.
- Private key (
id_ed25519) memiliki passphrase. - AI agent tidak dapat menampilkan prompt untuk meminta passphrase kepada pengguna.
Akibatnya, setiap kali SSH mencoba menggunakan private key tersebut, proses autentikasi berhenti karena menunggu input yang tidak pernah bisa diberikan.
Mengapa Hal Ini Terjadi?
SSH private key yang memiliki passphrase memang dirancang untuk meningkatkan keamanan. Saat pertama kali digunakan, SSH akan meminta pengguna memasukkan passphrase agar private key dapat didekripsi.
Pada sesi terminal biasa, alurnya adalah:
git push
│
▼
SSH meminta passphrase
│
▼
User memasukkan passphrase
│
▼
Autentikasi berhasil
Sedangkan pada AI agent:
git push
│
▼
SSH meminta passphrase
│
▼
Tidak ada mekanisme input interaktif
│
▼
Autentikasi gagal
Dengan kata lain, masalahnya bukan pada Git atau konfigurasi repository, melainkan karena agent tidak dapat merespons prompt yang muncul.
Solusi: Gunakan SSH Agent
Solusi yang direkomendasikan adalah menggunakan SSH Agent.
SSH Agent bertugas menyimpan private key yang sudah berhasil didekripsi. Passphrase hanya dimasukkan satu kali saat key dimuat ke agent. Setelah itu, semua aplikasi—including AI agent—dapat menggunakan key tersebut tanpa perlu meminta passphrase lagi.
Alurnya menjadi:
ssh-add id_ed25519
│
▼
User memasukkan passphrase (sekali saja)
│
▼
SSH Agent menyimpan key di memori
│
▼
AI Agent menjalankan git push
│
▼
SSH menggunakan key dari agent
│
▼
Push berhasil
Konfigurasi SSH
Pastikan file ~/.ssh/config memiliki konfigurasi yang sesuai.
macOS
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Kemudian tambahkan key ke SSH Agent:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Pada macOS versi lama:
ssh-add -K ~/.ssh/id_ed25519
Linux
Jalankan SSH Agent jika belum aktif:
eval "$(ssh-agent -s)"
Lalu tambahkan private key:
ssh-add ~/.ssh/id_ed25519
Passphrase hanya akan diminta satu kali ketika menjalankan ssh-add.
Memastikan SSH Agent Berjalan
Periksa apakah key sudah dimuat:
ssh-add -l
Jika berhasil, akan muncul fingerprint dari private key, misalnya:
256 SHA256:xxxxxxxxxxxxxxxx ~/.ssh/id_ed25519 (ED25519)
Apabila muncul:
The agent has no identities.
berarti private key belum dimuat ke SSH Agent.
Hasil
Setelah private key dimuat ke SSH Agent:
- AI agent dapat menjalankan
git push. - Tidak ada lagi permintaan memasukkan passphrase.
- Autentikasi tetap menggunakan private key yang sama.
- Keamanan tetap terjaga karena passphrase tidak dihapus dari private key.
Kesimpulan
Masalah kegagalan git push pada AI agent sering kali bukan disebabkan oleh konfigurasi Git maupun SSH yang salah, melainkan karena private key menggunakan passphrase sementara agent tidak mendukung input interaktif.
Menggunakan SSH Agent merupakan solusi yang tepat karena memungkinkan passphrase dimasukkan satu kali oleh pengguna, kemudian private key digunakan kembali oleh seluruh proses yang memerlukan autentikasi SSH, termasuk AI coding agent. Pendekatan ini menjaga keseimbangan antara keamanan dan kemudahan otomatisasi tanpa perlu menghapus passphrase dari private key.