{"repo":"NousResearch/hermes-agent","public_id":"113727","display_label":"xAI streaming TTS API key vs OAuth priority bug","summary":"A bug where xAI streaming TTS incorrectly prefers OAuth bearer tokens over an explicitly set XAI_API_KEY, resulting in 403 errors. The related items address fixing the authentication priority order.","subsystem":null,"counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":114821,"merged_at":"2026-09-18T16:47:07+00:00"},"resolution":{"state":"resolved","by":"pr-114821"},"freshness":{"state":"verified","last_verified_at":"2026-09-18T16:47:07+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":113727,"pr_number":114821,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-18T16:47:07+00:00"}],"members":[{"kind":"issue","number":113727,"title":"Bug: xAI streaming TTS resolves OAuth-first and 403s even when XAI_API_KEY is set","url":null,"state":"closed"},{"kind":"pr","number":113728,"title":"fix(tts): prefer explicit XAI_API_KEY over subscription OAuth in streaming TTS","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"27a30d8515d3","number":0},{"kind":"pr","value":"#114821","number":114821},{"kind":"pr","value":"#113727","number":113727},{"kind":"pr","value":"#113728","number":113728}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":113985,"title":"fix(tts): xAI streaming TTS must prefer XAI_API_KEY over OAuth bearer","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"27a30d8515d3","number":0},{"kind":"pr","value":"#114821","number":114821},{"kind":"pr","value":"#113727","number":113727},{"kind":"pr","value":"#113728","number":113728}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":114821,"title":"fix(tts): xAI streaming TTS uses XAI_API_KEY over the subscription OAuth bearer (#113727, salvage #113728)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_cli/setup_tts.py","tests/hermes_cli/test_setup_tts_xai_oauth.py","tests/tools/test_tts_streaming.py","tools/tts_streaming.py","tools/tts_tool.py","website/docs/developer-guide/streaming-tts.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}