{"repo":"NousResearch/hermes-agent","public_id":"94748","display_label":"Remove or fix keyless opencode-free vision auth headers","summary":"These items address incorrect authentication headers (Bearer placeholder sent instead of keyless headers) on the async vision path, with a final change removing the dead keyless opencode-free provider entirely rather than continuing to patch it.","subsystem":"agent","counts":{"members":3,"open_issues":1,"open_issues_distinct":1,"open_prs":0,"closed_issues":0,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":115002,"merged_at":"2026-09-18T10:10:38+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-18T10:10:38+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":93890,"pr_number":115002,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-18T10:10:38+00:00"},{"issue_number":94748,"pr_number":115002,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-18T10:10:38+00:00"},{"issue_number":114753,"pr_number":115002,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-18T10:10:38+00:00"}],"members":[{"kind":"issue","number":94748,"title":"fix(vision): keyless opencode-free relay 401s async vision calls (Bearer placeholder sent instead of keyless headers)","url":null,"state":"open"},{"kind":"pr","number":94800,"title":"fix(vision): send keyless opencode-free headers on the async (vision) path","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"debfc7420b","number":0},{"kind":"pr","value":"#115002","number":115002}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":115002,"title":"Remove the dead keyless opencode-free provider rather than patching it (salvage #114735, fixes #114753)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":[".env.example","COMPAT_MANIFEST.md","agent/agent_init.py","agent/agent_runtime_helpers.py","agent/auxiliary_client.py","agent/models_dev.py","agent/opencode_affinity.py","agent/reasoning_effort.py","compat_manifest.json","contributors/emails/60716910+DECRUX9812@users.noreply.github.com","gateway/run.py","hermes_cli/auth.py","hermes_cli/cli_agent_setup_mixin.py","hermes_cli/free_tier_bootstrap.py","hermes_cli/inventory.py","hermes_cli/main_provider_setup.py","hermes_cli/model_setup_flows.py","hermes_cli/model_switch_providers.py","hermes_cli/models.py","hermes_cli/models_catalog_static.py","hermes_cli/provider_catalog.py","hermes_cli/providers.py","hermes_cli/runtime_provider.py","plugins/model-providers/opencode-free/__init__.py","plugins/model-providers/opencode-free/plugin.yaml","tests/agent/test_fallback_api_mode_preservation.py","tests/agent/test_model_metadata.py","tests/agent/test_models_dev_meta_mapping.py","tests/agent/test_opencode_free_client_headers.py","tests/agent/test_opencode_free_provider.py","tests/agent/test_opencode_session_affinity.py","tests/gateway/test_runtime_provider_override_target_model.py","tests/hermes_cli/test_cli_provider_resolution.py","tests/hermes_cli/test_model_validation.py","tests/hermes_cli/test_opencode_free_live_catalog.py","tests/hermes_cli/test_opencode_zen_free_keyless.py","tests/hermes_cli/test_provider_catalog.py","tests/hermes_cli/test_provider_parity.py","tests/hermes_cli/test_runtime_provider_resolution.py","tests/plugins/model_providers/test_opencode_go_profile.py","tests/plugins/model_providers/test_thinking_toggle_parity.py","website/docs/integrations/providers.md","website/docs/reference/cli-commands.md","website/docs/user-guide/configuration.md","website/docs/user-guide/features/fallback-providers.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}