mirror of
https://github.com/jwadow/kiro-gateway.git
synced 2026-04-25 01:15:57 +03:00
[GH-ISSUE #20] [Bug] OpenCode compaction returns 400 Improperly formed request #17
Labels
No labels
bug
bug
enhancement
enhancement
fixed
fixed
invalid
needs-info
needs-testing
pull-request
question
upstream
wontfix
workaround
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/kiro-gateway-jwadow#17
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @g0dev on GitHub (Jan 7, 2026).
Original GitHub issue: https://github.com/jwadow/kiro-gateway/issues/20
Gateway Version
v1.0.8
What happened?
When Opencode tries to use model compaction, the server responds with the following error:
{
"status_code": 400,
"error_message": "Improperly formed request. (reason: None)"
}
Debug Logs
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.routes:chat_completions:218 | Model cache is empty, skipping forced population
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse__sPRu-jEQNS0W3fIPHjXRw
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_FYefynC6TJ6_ohNsH8Q0TA
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_bX1hw7S0R6azjiyV_30kEA
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 2 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_drDBV6nWRkKGzsfBkkN4BA
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_gK192SEPQIiPB9JhBg6Rhg
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_Z2UWpd4_RrG48IT_KyvPlQ
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 2 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_2cWF6zdjQUmShIY2LbwIzw
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_ME8ek5wgSoGlX-yHP8okfQ
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 2 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_uLmSh90LSkakoxlBgUivcw
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_TSqObCNQTBWJVCrCSvTulA
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_QWSteeAqRNCx9WTJ99WLnQ
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 2 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_gI9VbYZkQrSkCF0Ke5yzQQ
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_gaz_WDv4RzGPWZONJGOP5Q
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 2 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_m2xJdIQNTFadabQoAO7Sfw
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_8kpK2Oq0SQOS0d7oGo4h9w
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_1rdZeRhWRpK89SPeIxVRyg
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 2 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_hjX1qlMfSGm-JvdQ3WJn7g
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_GZ9Rtfo8SpOuOX_QtycvGw
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_zmpTSU0KQ5eya6X9c0JpeA
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 2 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_LeoIrVrnRIaySzeVHyRagw
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_Jm35gtwpRZOUDuURqAQaRw
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 2 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_Z38zDXyaSnOvwPKioVfclg
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_Nmsbab2gSEOe1dqvu0E6Wg
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_ZphivD8aTbyp2xOAxwiz0g
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_ZpsfQ8BuRRS2YizfKJBKQg
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_owWusieKQ6ajs3xPKdC-FA
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_NTHrMJBhSeWgrPpxRpvNtA
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_72XXVH1CQvOB1xm41oiAHQ
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_DAVNeqaiT5-LfE5FGtTB2g
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.693 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_qivs903qRQSU182WMc9dOA
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_-h5suU0bQCC5LVX6TVObGg
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_jDhwLHkdQDyd0I7SjX-Hkg
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_NGjV08lKTd-GYb8gzjtgmg
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_90SepO1mThyem9kZ0n1jOQ
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_elH4AosASEmm8hKWmNwV_w
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_uc4MGBa_RnShlSNfczk4Mw
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_FynjoxA2S2KQ_lwtzS5Imw
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:209 | Collected tool result for tool_call_id=tooluse_Bz3D0ODSSH2uqQOS-xktAQ
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:220 | Created user message with 1 tool results
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:264 | Merged adjacent messages with role user
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:264 | Merged adjacent messages with role user
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:264 | Merged adjacent messages with role user
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:264 | Merged adjacent messages with role user
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:264 | Merged adjacent messages with role user
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:merge_adjacent_messages:264 | Merged adjacent messages with role user
2026-01-07 18:04:35.694 | DEBUG | kiro_gateway.converters:inject_thinking_tags:162 | Injecting fake reasoning tags with max_tokens=4000
2026-01-07 18:04:35.696 | DEBUG | kiro_gateway.http_client:_get_client:107 | Creating streaming HTTP client (read_timeout=300.0s)
2026-01-07 18:04:37.220 | ERROR | kiro_gateway.routes:chat_completions:269 | Error from Kiro API: 400 - {"message":"Improperly formed request.","reason":null}
2026-01-07 18:04:37.220 | WARNING | kiro_gateway.routes:chat_completions:283 | HTTP 400 - POST /v1/chat/completions - Improperly formed request. (reason: None)
2026-01-07 18:04:37.227 | DEBUG | kiro_gateway.debug_logger:log_error_info:247 | [DebugLogger] Error info saved (status=400)
@jwadow commented on GitHub (Jan 8, 2026):
Hello again, good to see you. Unfortunately, regular console logs won't tell you anything in this situation; I need the full context of the request. You can simulate the agent's actual work by fake conversation if you're hesitant to show the context of your actual conversation and try to reproduce the error:
DEBUG_MODE=errorsto your.envfiledebug_logs/folder below@kil-penguin commented on GitHub (Jan 8, 2026):
I analyzed this issue and found the root cause.
Root Cause: When the last message is a tool result,
inject_thinking_tagsadds thinking mode tags to"Continue"content, whiletoolResultsis present inuserInputMessageContext. Kiro API doesn't accept this combination.Debug Log Evidence:
Reproduction:
role=toolwith tool resultsmerge_adjacent_messages: converted to user message withtoolResultsextract_text_contentreturns empty string (tool_results is a list)"Continue"inject_thinking_tagsadds<thinking_mode>enabled</thinking_mode>...prefixtoolResults+ thinking tags combinationFix Approach: Skip thinking tag injection when
toolResultsare present in the current message.I can work on a PR if this analysis is correct. @jwadow @g0dev
@jwadow commented on GitHub (Jan 9, 2026):
Most likely I removed these changes during the refactoring at
github.com/jwadow/kiro-gateway@1dca18644e. The reason is that I don’t have thought blocks on regular messages on agents like Roo Code.It’s quite strange to be completely deprived of thought for the sake of context compression in OpenCode.
I believe that the problem is either in OpenCode, or perhaps the problem resolved itself due to incorrect diagnosis, because I have fixed quite a lot of things now.
So I’ll open the issue again to wait for your observations.
@g0dev commented on GitHub (Jan 9, 2026):
Thanks for reopening the issue.
I tested both the original PR and the latest commit, but the problem still happens. Model compaction in OpenCode continues to fail with the same 400 error.
opencode_compact_kiro.zip
@jwadow commented on GitHub (Jan 9, 2026):
@g0dev, thanks for the logs, I fixed your issue, and now everything works as it should have. I missed a couple of lines of code.
While there's a fix, it's also a flaw in my architecture. The contents of the tools aren't sent to Kiro, so compression will only occur based on text messages, without taking the tools' contents into account. So I'll make another commit to get everything working as I suspect it should.
So I won't close the issue, but I will add new features, tied to this issue for convenience.
@jwadow commented on GitHub (Jan 9, 2026):
@g0dev, the real bug was much deeper, entrenched from the very beginning of the project because the Kiro API has no documentation. Now everything works perfectly. Let's go!