Login OpenAI Codex OAuth di VPS OpenClaw: Solusi Localhost Tunnel dan Consent Loop

Masalah login OpenAI Codex OAuth di OpenClaw sering terlihat membingungkan: tombol consent sudah diklik, browser muter, callback masuk ke localhost, tapi agent di VPS tetap belum terhubung.
Di banyak kasus, problemnya bukan karena akun OpenAI-nya salah. Masalahnya lebih sederhana: browser berjalan di laptop/HP, sementara OpenClaw berjalan di VPS. Jadi saat OAuth redirect ke http://localhost:<port>/auth/callback, localhost yang dimaksud browser adalah device lokal, bukan VPS.
Solusi praktisnya adalah membuat SSH tunnel: port localhost di device lokal diteruskan ke 127.0.0.1 di VPS. Dengan begitu callback OAuth dari browser bisa sampai ke OpenClaw yang sedang menunggu di server.
Artikel ini merapikan flow-nya dengan bahasa aman untuk publik. Tidak ada credential asli, email internal, token, IP server, atau authorization code yang perlu dibuka.
Kenapa OpenAI Codex OAuth di VPS bisa mentok?
OpenClaw bisa berjalan di VPS, tapi OAuth login tetap memakai browser. Saat command login dijalankan, OpenClaw biasanya membuat callback lokal seperti ini:
http://localhost:1455/auth/callback
Angka port bisa berbeda. Di contoh ini kita pakai 1455, tapi kalau URL OAuth menampilkan port lain, gunakan port yang muncul di terminal.
Masalahnya: kalau browser dibuka di laptop, localhost:1455 menunjuk ke laptop. Padahal listener OpenClaw ada di VPS. Tanpa tunnel, browser tidak tahu cara mengirim callback itu ke server.
Flow yang benar:
browser lokal -> localhost:1455 -> SSH tunnel -> VPS 127.0.0.1:1455 -> OpenClaw
Kalau tunnel belum aktif, halaman bisa muter, error, atau login terlihat sukses tapi OpenClaw tidak pernah menerima callback.
Hubungannya dengan issue OpenAI Codex OAuth di GitHub OpenClaw
Di GitHub OpenClaw, ada beberapa issue terkait OpenAI Codex OAuth. Penting untuk membedakan problem tunnel lokal dengan problem upstream.
Issue seperti #49138 membahas token OAuth yang tidak membawa scope api.responses.write, sehingga request ke Responses API bisa gagal.
Issue #68033 membahas kombinasi Cloudflare challenge dan scope OAuth yang kurang pada provider openai-codex.
Ada juga laporan serupa yang pernah ditutup, seperti #39994, #36660, dan #62235.
Jadi ada dua lapisan problem:
- Tunnel/callback problem: browser tidak bisa mengirim callback ke VPS.
- OAuth/provider problem: token atau route provider memang bermasalah setelah callback berhasil.
Artikel ini fokus ke lapisan pertama: memastikan login OAuth dari browser lokal benar-benar sampai ke OpenClaw di VPS. Setelah itu baru kita bisa menilai apakah error yang tersisa berasal dari scope/token/provider.
Aturan keamanan sebelum mulai
Jangan pernah share hal-hal ini ke chat publik, issue GitHub, atau artikel:
- full callback URL yang berisi
code=..., - authorization code,
- access token,
- refresh token,
- isi penuh
auth-profiles.json, - email asli tim,
- IP server produksi,
- bot token,
- screenshot browser yang memperlihatkan akun atau session.
Kalau perlu memberi contoh profile, pakai alias publik seperti:
openai-codex:[email protected]
Kalau perlu memberi contoh server, pakai placeholder:
<USER>@<IP_VPS>
Tujuannya sederhana: pembaca tetap paham polanya tanpa melihat credential asli.
Cara 1: OpenSSH atau terminal biasa
Ini cara paling universal untuk laptop Linux, macOS, atau Windows yang punya OpenSSH.
Kalau login pakai password:
ssh -L 1455:127.0.0.1:1455 -p <PORT> <USER>@<IP_VPS>
Kalau login pakai SSH key:
ssh -L 1455:127.0.0.1:1455 -i ~/.ssh/<KEY_FILE> -p <PORT> <USER>@<IP_VPS>
Setelah masuk ke VPS, jalankan:
openclaw models auth login --provider openai-codex
Buka URL OAuth yang muncul di browser pada device yang sama dengan tunnel SSH tadi.
Kalau OAuth URL memakai port selain 1455, ganti semua 1455 di command SSH dengan port tersebut.
Cara 2: lewat ~/.ssh/config
Kalau sering login ke server yang sama, lebih rapi pakai SSH config.
Edit:
~/.ssh/config
Isi contoh:
Host my-vps
HostName <IP_VPS>
User <USER>
Port <PORT>
LocalForward 1455 127.0.0.1:1455
ExitOnForwardFailure yes
Kalau pakai key:
IdentityFile ~/.ssh/<KEY_FILE>
IdentitiesOnly yes
Lalu connect:
ssh my-vps
Setelah masuk VPS:
openclaw models auth login --provider openai-codex
Catatan penting: gunakan format:
LocalForward 1455 127.0.0.1:1455
Jangan terlalu cepat bind local side ke 127.0.0.1:1455 kalau callback OAuth memakai localhost, karena sebagian browser bisa resolve localhost ke IPv6 ::1.
Cara 3: Termius
Di Termius, buat Local Port Forwarding.
Setting contoh:
Type: Local
Local port number: 1455
Bind address: localhost
Intermediate host: <host VPS>
Destination address: 127.0.0.1
Destination port number: 1455
Save rule, lalu disconnect dan connect ulang ke VPS.
Log yang sehat biasanya menampilkan port seperti ini:
Local connections to "localhost":"1455"
Kalau log hanya seperti ini:
Local connections to "localhost":"
berarti local port belum tersimpan dengan benar.
Setelah tunnel aktif, jalankan di VPS:
openclaw models auth login --provider openai-codex
Buka OAuth URL di browser pada device yang sama dengan Termius.
Cara 4: PuTTY
Untuk PuTTY di Windows:
- Buka PuTTY.
- Isi host, port, dan SSH seperti biasa.
- Masuk ke menu:
Connection -> SSH -> Tunnels
- Isi:
Source port: 1455
Destination: 127.0.0.1:1455
Type: Local
Address family: Auto
- Klik Add.
Harus muncul kira-kira:
L1455 127.0.0.1:1455
- Klik Open dan login ke VPS.
- Jalankan:
openclaw models auth login --provider openai-codex
Buka URL OAuth di browser pada komputer yang sama dengan PuTTY.
Cara 5: VS Code Remote SSH
Cara paling rapi tetap lewat ~/.ssh/config dengan LocalForward.
Contoh:
Host my-vps
HostName <IP_VPS>
User <USER>
Port <PORT>
LocalForward 1455 127.0.0.1:1455
ExitOnForwardFailure yes
Lalu di VS Code:
- Jalankan Remote-SSH: Connect to Host.
- Pilih host VPS.
- Buka terminal remote.
- Jalankan:
openclaw models auth login --provider openai-codex
Alternatifnya, pakai tab Ports di VS Code:
- Connect ke VPS via Remote SSH.
- Buka tab Ports.
- Klik Forward a Port.
- Masukkan port:
1455
Pastikan local port juga 1455, bukan random port lain.
Flow login setelah tunnel aktif
Urutannya harus seperti ini:
- Aktifkan SSH tunnel.
- Masuk ke VPS lewat sesi yang sama.
- Jalankan:
openclaw models auth login --provider openai-codex
- Buka OAuth URL di browser lokal.
- Selesaikan login dan consent.
- Redirect ke
localhost:<port>/auth/callbackakan diteruskan ke VPS.
Kalau callback berhasil, OpenClaw akan menerima code dan menyimpan auth profile.
Kalau halaman tetap error tetapi address bar sudah berubah ke:
http://localhost:1455/auth/callback?code=...
copy full URL dari address bar, lalu paste ke terminal OpenClaw kalau muncul prompt:
Paste the authorization code (or full redirect URL):
Jangan share URL callback itu ke chat publik, karena query string-nya bisa berisi authorization code.
Troubleshooting cepat
1. Browser harus di device yang sama dengan tunnel
Kalau tunnel berjalan di laptop, buka OAuth URL di browser laptop itu juga. Kalau URL dibuka di HP, tunnel laptop tidak akan dipakai.
2. Stuck di halaman consent OpenAI
Kalau address bar masih di halaman seperti:
https://auth.openai.com/sign-in-with-chatgpt/codex/consent
lalu tombol Continue hanya muter, biasanya ini masalah browser/session OpenAI, bukan tunnel.
Coba:
- buka di Chrome/Safari asli, bukan in-app browser;
- login dulu ke
https://chatgpt.com; - refresh halaman consent;
- coba Incognito/Private window;
- matikan sementara VPN, adblock, atau private DNS;
- ulang command login kalau OAuth URL sudah expired.
3. Stuck setelah redirect ke localhost
Kalau address bar sudah berubah ke:
http://localhost:1455/auth/callback?code=...
lalu error atau muter, kemungkinan besar tunnel belum benar.
Cek:
- tunnel sudah aktif sebelum klik Continue;
- local port benar-benar sama dengan port callback;
- browser dibuka di device yang sama dengan tunnel;
- port tidak sedang dipakai aplikasi lain;
- SSH session belum disconnect.
4. Localhost vs 127.0.0.1
Sebagian browser resolve localhost ke IPv6 ::1. Kalau tunnel hanya listen di IPv4, callback bisa gagal.
Jika perlu, edit address bar dari:
http://localhost:1455/auth/callback?code=...
menjadi:
http://127.0.0.1:1455/auth/callback?code=...
Jangan ubah path atau query string setelahnya.
5. Login berhasil tapi model tetap gagal
Kalau callback sudah berhasil dan auth profile sudah tersimpan, tapi model tetap gagal dengan pesan seperti missing scope atau provider error, berarti masalahnya bukan lagi tunnel.
Di titik ini, cek issue upstream dan status provider. Error seperti Missing scopes: api.responses.write lebih dekat ke problem OAuth scope/provider, bukan port forwarding.
Setelah login: rapikan auth profile
Kalau sebelumnya sudah berkali-kali coba login, config bisa punya beberapa profile lama. Supaya debugging tidak kabur, rapikan state:
- pakai satu profile OpenAI Codex aktif;
- pakai alias publik saat menulis dokumentasi;
- pastikan model default menunjuk ke provider yang sama;
- kosongkan fallback sementara saat testing;
- restart gateway;
- jalankan
openclaw doctordanopenclaw status.
Contoh alias publik:
openai-codex:[email protected]
Contoh target model:
openai-codex/gpt-5.5
Dengan begitu, kalau error masih terjadi, sumbernya lebih jelas: bukan salah browser, bukan salah tunnel, dan bukan profile lama yang kepakai diam-diam.
Kesimpulan operasional
Untuk login OpenAI Codex OAuth di OpenClaw yang berjalan di VPS, kuncinya adalah memahami arti localhost.
localhost di browser bukan VPS. Ia adalah device tempat browser berjalan. Karena itu OAuth callback butuh SSH tunnel agar bisa sampai ke OpenClaw di server.
Urutan paling aman:
- buat tunnel sesuai port callback;
- buka OAuth URL di device yang sama;
- jangan share callback URL atau authorization code;
- kalau consent masih muter, bersihkan browser/session;
- kalau callback berhasil tapi model gagal, baru cek issue OAuth scope/provider.
Dengan flow ini, problem login jadi lebih mudah dipilah: mana yang cuma tunnel, mana yang browser consent, dan mana yang memang bug upstream OpenAI Codex OAuth di OpenClaw.
Tag Artikel
Artikel Terkait
Temukan lebih banyak konten menarik yang mungkin Anda sukai
Tentang Penulis

Rama Aditya
Profesional dengan pengalaman 15+ tahun dalam digital marketing, fullstack development, dan konsultasi bisnis. Fokus membantu bisnis Indonesia membangun sistem yang efisien, scalable, dan berdampak langsung ke pertumbuhan bisnis.
Pelajari Tentang Kami

