{"repo":"NousResearch/hermes-agent","public_id":"32528","display_label":"QQ Bot DM approval button auth chat_type mismatch","summary":"Multiple bug reports and fix attempts addressing QQ Bot approval button clicks being rejected as unauthorized due to a chat_type mismatch between 'dm' and 'c2c' in DM/private sessions. Includes one feature item wiring native tool-approval UX via inline keyboards.","subsystem":"gateway","counts":{"members":23,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":9,"merged_prs":1,"attempt_prs":13},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":105349},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-07T20:56:32+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.10197628458498019},"fix_edges":[{"issue_number":32528,"pr_number":105349,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":98100,"pr_number":105349,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":32528,"title":"QQ Bot private chat (C2C) button approvals always rejected as unauthorized due to chat_type mismatch (dm vs c2c)","url":null,"state":"closed"},{"kind":"issue","number":34432,"title":"QQ Bot: approval button clicks rejected — session_key uses dm as chat_id instead of user openid","url":null,"state":"closed"},{"kind":"issue","number":35760,"title":"QQ bot: approval button clicks always rejected due to chat_type mismatch (c2c vs dm)","url":null,"state":"closed"},{"kind":"issue","number":39110,"title":"[Bug]: Hermes QQ bot session_key","url":null,"state":"closed"},{"kind":"issue","number":40655,"title":"QQ Bot: approval button clicks always rejected due to chat_type mismatch (\"dm\" vs \"c2c\")","url":null,"state":"closed"},{"kind":"issue","number":52467,"title":"[QQ Bot] Approval button click rejected as 'unauthorized' despite valid session","url":null,"state":"closed"},{"kind":"issue","number":52980,"title":"fix(qqbot): approval button clicks in DM silently rejected — one-line fix sitting unmerged for 34 days","url":null,"state":"closed"},{"kind":"issue","number":62043,"title":"QQ bot: approval buttons do not trigger /approve command","url":null,"state":"closed"},{"kind":"issue","number":64840,"title":"[Bug]: QQ Bot approval always fails for DM sessions because","url":null,"state":"closed"},{"kind":"pr","number":31593,"title":"fix(qqbot): authorize approval clicks for dm session keys","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#105349","number":105349},{"kind":"pr","value":"#105349","number":105349}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":32752,"title":"fix(qqbot): authorize dm chat_type in interaction approval","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"2ff990c13f7d","number":0},{"kind":"pr","value":"#139729","number":139729}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":33962,"title":"fix(qqbot): approval button auth rejects DM sessions","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#31593","number":31593},{"kind":"pr","value":"#32752","number":32752},{"kind":"pr","value":"#32528","number":32528}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":34438,"title":"fix(qqbot): accept 'dm' session key in approval authorization (#34432)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#31593","number":31593},{"kind":"pr","value":"#33962","number":33962},{"kind":"pr","value":"#32752","number":32752},{"kind":"pr","value":"#32528","number":32528}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":35774,"title":"fix(qqbot): authorize approval clicks for DM sessions (chat_type='dm')","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#32752","number":32752},{"kind":"pr","value":"#31593","number":31593}],"category":"superseded_by_pr","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":35799,"title":"Fix QQ bot approval and Weixin stale session detection","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":35873,"title":"fix(qqbot): align chat_type 'dm' in button interaction authorization","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#31593","number":31593},{"kind":"pr","value":"#32752","number":32752},{"kind":"pr","value":"#33962","number":33962},{"kind":"pr","value":"#35774","number":35774},{"kind":"pr","value":"#32528","number":32528},{"kind":"pr","value":"#35760","number":35760}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":39133,"title":"fix(qqbot): authorize DM session approval clicks in addition to c2c","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"2ff990c13f7d","number":0},{"kind":"pr","value":"#139729","number":139729}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":46154,"title":"fix(qqbot): authorize dm approval interactions","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#31593","number":31593}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":52475,"title":"fix(qqbot): authorize approval clicks for dm session keys","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#31593","number":31593},{"kind":"pr","value":"#31593","number":31593}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":64863,"title":"fix(qqbot): authorize DM sessions in approval interaction guard","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#31593","number":31593},{"kind":"pr","value":"#31593","number":31593}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":64870,"title":"fix(qqbot): authorize approval clicks for DM (private) sessions","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"2ff990c13f7d","number":0},{"kind":"pr","value":"#139729","number":139729}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":101814,"title":"fix(qqbot): treat dm like c2c in approval-button session authorization","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"e5382cd823","number":0},{"kind":"pr","value":"#105349","number":105349},{"kind":"pr","value":"#31593","number":31593}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":105349,"title":"fix(qqbot): approval buttons in QQ private chats resolve instead of timing out (salvage #31593)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["contributors/emails/[redacted:email]","gateway/platforms/qqbot/adapter.py","tests/gateway/test_qqbot.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}