
Hermes Agent 0.18.2 punya masalah operasional serius pada deployment Telegram yang memakai Python 3.13, termasuk official Docker image yang dilaporkan pengguna. Gateway tetap hidup, tetapi adapter Telegram gagal connect pada setiap startup dan retry dengan error:
'HTTPXRequest' object attribute 'do_request' is read-only
Fix sudah masuk ke branch main lewat PR #64574 pada 15 Juli 2026. Namun stable release terbaru masih Hermes Agent 0.18.2, dirilis 8 Juli 2026. Artinya, patch tersebut belum tersedia dalam tag stable baru.
Status per 20 Juli 2026: bug terkonfirmasi pada jalur Telegram + Python 3.13, fix sudah merged ke
main, tetapi belum masuk release stable setelah 0.18.2. Ini bukan security advisory.
Gejalanya jelas: gateway hidup, Telegram mati
Pada kondisi ini, Hermes bukan sekadar lambat connect. Adapter Telegram gagal dibuat. Log berulang kali menampilkan pola seperti ini:
Failed to connect to Telegram: 'HTTPXRequest' object attribute 'do_request' is read-only
Gateway started with no connected platforms
Telegram startup failed
Cron atau komponen gateway lain masih dapat berjalan. Itu yang membuat insiden ini mudah salah diagnosis: proses terlihat aktif, sementara pesan Telegram tidak masuk dan bot tidak bisa beroperasi.
Issue terbaru, #67817, mereproduksi masalah pada Hermes Agent 0.18.2 dengan python-telegram-bot==22.6. Reporter juga mengujinya pada official Docker image terbaru yang tersedia saat laporan dibuat. Hasilnya sama: setiap attempt gagal dan adapter tidak pulih.
Kenapa hanya deployment tertentu yang kena?
Root cause-nya ada pada cara Hermes memasang instrumentation untuk request getUpdates.
Kode lama mencoba mengganti method pada instance request secara langsung:
request.do_request = _do_request
Pada Python 3.13, object HTTPXRequest yang dipakai python-telegram-bot menjadi fully slotted. Instance tersebut tidak lagi punya tempat untuk menerima assignment method seperti di atas. Python lalu melempar AttributeError, dan proses connect Telegram berhenti.
Menurut penjelasan maintainer di PR #64574, Python 3.11 dan 3.12 tidak terkena jalur kegagalan yang sama. Official Docker image menggunakan Python 3.13, sehingga pengguna Docker berada di kelompok risiko utama.
Fix di branch main mengubah cara instrumentation dipasang
Patch tidak menghapus pemantauan polling. Hermes sekarang mengganti class request ke subclass tipis yang tetap kompatibel dengan __slots__, lalu melakukan override do_request di level class.
Secara operasional, hasil yang diinginkan tetap sama:
- polling
getUpdatestetap dipantau; - progress observation tetap berjalan;
- tidak ada assignment method ke instance yang read-only;
- Telegram dapat connect pada Python 3.13.
Maintainer menambahkan regression test dengan request double yang fully slotted. Validasi pada PR mencatat 8 dari 8 test polling Telegram lolos, termasuk probe langsung pada virtual environment Python 3.13.
Hermes 0.18.2 belum membawa fix ini
Urutan waktunya cukup tegas:
- Hermes Agent 0.18.2 dirilis 8 Juli 2026;
- commit fix dibuat 14 Juli 2026;
- PR #64574 merged 15 Juli 2026;
- sampai audit 20 Juli 2026, release stable terbaru tetap 0.18.2.
Jadi perbaikan ada di main, bukan di tag stable 0.18.2. Jangan menganggap update ke 0.18.2 sudah menyelesaikan masalah Telegram ini.
Ada satu detail yang perlu dicatat. Issue #67817 dibuat setelah fix merged karena reporter menguji stable dan image yang masih mengidentifikasi diri sebagai 0.18.2. Tanggapan triage meminta retest pada current build karena main sudah membawa #64574. Ini konsisten dengan status patch: masalah masih nyata di stable, sedangkan perbaikannya menunggu release berikutnya.
Siapa yang perlu bertindak sekarang?
Pengguna official Docker image
Cek log gateway setelah startup. Jika muncul error do_request is read-only, jangan buang waktu merotasi token bot atau mengubah allowlist. Error ini terjadi sebelum adapter Telegram berhasil berjalan dan bukan indikasi token Telegram salah.
Pengguna Python 3.11 atau 3.12
Bug spesifik ini tidak dilaporkan pada runtime tersebut. Tetap cek log dan fungsi kirim-terima pesan, tetapi tidak perlu mengubah deployment hanya karena membaca advisory operasional ini.
Pengguna build dari main
Fix sudah tersedia, tetapi branch main bergerak cepat dan memuat banyak perubahan lain. Uji build tersebut di staging sebelum dipakai untuk bot production.
Langkah mitigasi yang aman
Sambil menunggu stable release baru:
- Konfirmasi versi runtime. Cek versi Python di container atau environment Hermes.
- Cari signature error yang tepat. Fokus pada
HTTPXRequest,do_request, danread-onlydi log startup. - Verifikasi end-to-end. Status proses aktif belum cukup; kirim pesan uji dan pastikan update benar-benar diterima.
- Jangan rebuild production dari
maintanpa staging. Patch Telegram penting, tetapi Anda juga menerima seluruh perubahan lain sejak tag 0.18.2. - Jika harus memulihkan layanan cepat, gunakan runtime yang sudah teruji dan backup konfigurasi lebih dulu. Hindari eksperimen langsung pada bot utama.
- Setelah release baru terbit, cek commit range atau release notes. Pastikan PR #64574 atau commit
164a413benar-benar termasuk.
Ada fix Telegram lain setelah 0.18.2
Area Telegram masih aktif diperbaiki. Pada 19 Juli, PR #67241 juga merged untuk mencegah reconnect ladder membeku ketika shutdown koneksi polling macet. Bug tersebut berbeda: adapter sudah pernah berjalan, lalu recovery dapat tersangkut sehingga gateway terlihat hidup tetapi diam.
Dua kasus ini punya gejala akhir yang mirip -- bot Telegram tidak merespons -- tetapi signature log dan titik gagalnya berbeda:
do_request is read-only: adapter gagal connect sejak startup pada Python 3.13;- reconnect ladder macet: adapter kehilangan koneksi dan recovery tidak maju.
Operator sebaiknya menyimpan log startup dan log saat insiden. Tanpa itu, dua failure mode ini mudah tercampur.
Keputusan operasional
Jika Hermes 0.18.2 Anda berjalan lewat official Docker image dan Telegram gagal connect dengan signature di atas, treat ini sebagai regression kompatibilitas, bukan kesalahan token.
Pilihan paling aman untuk production adalah menunggu tag stable yang memasukkan #64574. Jika downtime tidak bisa diterima, uji current build atau runtime alternatif di staging, lalu lakukan smoke test inbound dan outbound sebelum cutover.
Jangan berhenti di status process manager. Untuk bot Telegram, health check yang benar adalah pesan masuk diterima, diproses, dan balasan keluar berhasil.


