
Ada bug baru di OpenClaw yang kelihatannya seperti masalah provider image atau video, padahal kerusakannya terjadi di lapisan display tool. String output dipotong pada 160 karakter. Kalau output tersebut adalah signed URL, parameter autentikasi di bagian belakang ikut hilang dan link tidak bisa dipakai.
Issue resmi #112839 dibuka pada 23 Juli 2026. Contoh yang dilaporkan memakai DashScope/OSS, tetapi pola yang sama relevan untuk layanan lain yang mengembalikan presigned URL panjang, termasuk object storage dan pipeline media berbasis cloud.
Status saat artikel ini ditulis: issue masih terbuka dan belum punya label atau release fix. Reproduksi pelapor berasal dari OpenClaw v2026.5.7. Belum ada bukti bahwa setiap tool atau setiap versi OpenClaw pasti terdampak.
Gejalanya: provider sukses, tetapi URL gagal dibuka
Alur normal generate media biasanya seperti ini:
- provider menerima request;
- job image atau video selesai;
- tool mengembalikan URL hasil;
- agent mengambil atau mengirim file dari URL tersebut.
Pada kasus yang dilaporkan, langkah ketiga rusak. URL asli bisa sepanjang 250 sampai 400 karakter atau lebih karena membawa query parameter seperti masa berlaku, access key ID, dan signature. OpenClaw hanya meneruskan 160 karakter ke konteks agent, lalu mengganti sisanya dengan ....
Contoh bentuk sederhananya:
URL asli:
https://storage.example.com/result.webp?Expires=...&AccessKeyId=...&Signature=...
Yang terlihat oleh agent:
https://storage.example.com/result.webp?Expires=...&AccessKe...
Provider sebenarnya sudah menghasilkan aset. Namun agent menerima link yang tidak lengkap. Ketika link dibuka, object storage dapat membalas error seperti InvalidAccessKeyId, SignatureDoesNotMatch, atau akses ditolak.
Akar masalahnya ada di coerceDisplayValue
Menurut issue #112839, pemotongan terjadi di jalur:
resolveToolVerbAndDetailForArgs -> coerceDisplayValue
Fungsi tersebut memakai batas tetap maxStringChars sebesar 160 karakter untuk string output tool. Batas ini masuk akal untuk preview singkat di UI, tetapi tidak aman jika nilai string adalah data operasional yang harus dipakai agent.
Signed URL bukan teks dekoratif. Setiap karakter setelah tanda ? bisa menjadi bagian dari autentikasi. Menghapus ujung URL berarti mengubah credential sementara menjadi nilai yang tidak valid.
Di sinilah bug ini terasa membingungkan: request provider bisa sukses, quota terpakai, file sudah dibuat, tetapi workflow tetap gagal saat agent mencoba mengambil hasilnya.
Siapa yang paling berisiko
Bug ini material jika workflow OpenClaw Anda:
- generate gambar atau video melalui provider yang mengembalikan URL panjang;
- menerima file dari AWS S3, OSS, R2, GCS, atau object storage lain melalui presigned URL;
- menyerahkan URL tool langsung ke agent untuk download, upload ulang, atau delivery ke channel;
- menjalankan automation tanpa menyimpan raw response provider di tempat lain;
- menganggap error akses URL sebagai bukti bahwa API key provider salah.
Workflow yang mengembalikan file lokal, media ID internal, atau URL publik pendek tidak otomatis terkena masalah yang sama.
Kenapa retry biasa tidak menyelesaikan masalah
Retry generation kemungkinan hanya membuat aset baru dan signed URL baru. Kalau jalur display tetap memotong output pada karakter ke-160, hasil retry akan rusak dengan cara yang sama.
Ini juga bisa membakar quota dua kali. Operator melihat link gagal, menjalankan generate ulang, lalu mendapat link lain yang tetap terpotong.
Sebelum retry, bandingkan tiga hal:
- status job di provider;
- raw response provider, jika tersedia;
- URL yang akhirnya terlihat oleh agent.
Kalau raw response berisi URL lengkap tetapi konteks agent menampilkan ..., masalahnya bukan pada proses generation.
Mitigasi aman sebelum ada fix resmi
1. Jangan jadikan URL yang tampil di agent sebagai satu-satunya source of truth
Simpan raw response provider di backend, file sementara, database, atau task store yang tidak melewati pemotongan display. Agent sebaiknya menerima media ID atau path stabil, bukan harus mengandalkan preview string.
2. Download hasil di sisi integrasi
Jika Anda mengelola custom tool, biarkan tool mengambil signed URL secara internal lalu simpan hasil ke file lokal atau media store. Kembalikan path atau identifier yang pendek ke agent.
Prinsipnya:
provider -> signed URL lengkap -> backend download -> file/media ID -> agent
Bukan:
provider -> signed URL panjang -> display tool -> agent download
3. Catat panjang URL saat debugging
Jangan log credential atau signed URL lengkap ke kanal publik. Cukup catat panjang string, hostname, status job, dan apakah output berakhir dengan ....
Jika URL yang diterima agent tepat berhenti di sekitar 160 karakter, itu sinyal kuat bahwa jalur ini perlu diperiksa.
4. Hindari menonaktifkan truncation secara sembarang di production
Issue mengusulkan beberapa arah fix: menaikkan batas ke 1024 karakter, membuat limit configurable, atau mengecualikan output tool tertentu dari truncation. Namun patch lokal tanpa test bisa membuat UI bising, memperbesar konteks, atau membocorkan nilai sensitif yang sebelumnya hanya tampil singkat.
Untuk production, lebih aman memperbaiki kontrak tool: data lengkap tetap tersedia secara terstruktur, sedangkan preview UI boleh diringkas.
5. Tambahkan smoke test media end-to-end
Test tidak cukup berhenti pada status job completed. Pastikan workflow benar-benar bisa:
- menerima output lengkap;
- mengunduh aset;
- memverifikasi tipe dan ukuran file;
- mengirim atau menyimpan media;
- membuka URL tujuan akhir tanpa parameter yang hilang.
Apakah perlu downgrade?
Belum ada dasar kuat untuk merekomendasikan downgrade umum. Issue menyebut v2026.5.7 sebagai environment reproduksi, sedangkan stable resmi terbaru saat artikel ini ditulis adalah v2026.7.1. Laporan tersebut belum membuktikan batas versi yang terdampak atau versi yang pasti aman.
Keputusan yang lebih masuk akal:
- Workflow media normal: lanjutkan operasi, tetapi tambahkan test URL dan file end-to-end.
- URL terlihat terpotong: hentikan retry generation, cek raw response dan jalur display.
- Custom integration: ubah output menjadi media ID atau path lokal.
- Production bergantung pada signed URL: tahan perubahan besar sampai ada fix dan test regresi resmi.
Kesimpulan operasional
Bug #112839 bukan sekadar masalah tampilan. Memotong string output tool dapat merusak data yang dibutuhkan agent untuk menyelesaikan pekerjaan.
Kalau generate image atau video mendadak menghasilkan link invalid, jangan langsung rotasi API key atau menyalahkan provider. Cek apakah signed URL dipotong pada 160 karakter. Simpan raw response di luar display layer, download aset di sisi integrasi, dan baru lakukan retry setelah jalur datanya dipastikan utuh.
Sumber primer
- OpenClaw issue #112839 - coerceDisplayValue truncates tool output strings at 160 chars, breaking signed URLs
- OpenClaw releases - stable terbaru v2026.7.1 saat artikel ditulis
- PR #23803 - usulan lama menaikkan maxStringChars, ditutup sebagai stale
- PR #96958 - fix batas code point yang sudah merged, tetapi bukan fix limit 160 karakter


