# NousResearch/hermes-agent · Background review agent missing custom provider credentials

## Open now

- Nothing open on GitHub.

Multiple reports and fixes address background review agents failing when custom API endpoints, api_key, or base_url are not forwarded from the parent agent's configuration. Covers 403 errors, missing provider config, and related credential propagation issues.

## TL;DR

- 8 member(s): 0 open issue(s), 4 closed issue(s), 0 open PR(s), 1 merged PR(s), 3 PR(s) closed without merging.
- A fix was merged to main in PR #16099. Verify it addresses your case.
- **Recommended:** read PR #16099 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `unresolved`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_PARTIAL`): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text.
- Members outside that structural core may belong to a different underlying problem.
- Pairwise link density `0.29`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Closed / duplicate issues

- #3233: \[Bug\]: Background review agents get 403 on providers with custom API endpoints
- #15543: Background Review Agent Fails with Custom Providers (Missing api_key/base_url)
- #15882: _spawn_background_review doesn't pass base_url / api_key — context length detection fails for custom/fallback endpoints
- #16123: Bug: Background review fails with No LLM provider configured when using custom providers

## Prior & competing PRs

- **#16099: fix(run_agent): background review fork inherits parent's live runtime**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `run_agent.py`
  - fix hunks:
  - `run_agent.py`

    ```diff
    @@ -3154,12 +3154,25 @@ def _run_review():
                     with open(os.devnull, "w") as _devnull, \
                          contextlib.redirect_stdout(_devnull), \
                          contextlib.redirect_stderr(_devnull):
    +                    # Inherit the parent agent's live runtime (provider, model,
    +                    # base_url, api_key, api_mode) so the fork uses the exact
    +                    # same credentials the main turn is using.  Without this,
    +                    # AIAgent.__init__ re-runs auto-resolution from env vars,
    +                    # which fails for OAuth-only providers, session-scoped
    +                    # creds, or credential-pool setups where the resolver can't
    +                    # reconstruct auth from scratch -- producing the spurious
    +                    # "No LLM provider configured" warning at end of turn.
    +                    _parent_runtime = self._current_main_runtime()
                         review_agent = AIAgent(
                             model=self.model,
                             max_iterations=8,
                             quiet_mode=True,
                             platform=self.platform,
                             provider=self.provider,
    +                        api_mode=_parent_runtime.get("api_mode") or None,
    +                        base_url=_parent_runtime.get("base_url") or None,
    +                        api_key=[redacted:secret-assignment]"api_key") or None,
    +                        credential_pool=[redacted:secret-assignment] "_credential_pool", None),
                             parent_session_id=self.session_id,
                         )
                         review_agent._memory_write_origin = "background_review"
    ```
- **#3235: Fix background review 403**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `e3901d5b2`, `#3233`, `#16099`, `#3210`
- **#15645: fix(run_agent): forward api_key/base_url/api_mode to background review agent (#15543)**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#16099`, `#15645`, `#16099`
- **#15884: fix: pass base_url and api_key to background review AIAgent**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `e3901d5b257d5ac3f58420c3fb55aaa536fc56ac`, `#16099`, `#15645`

## Fix status

- Merged to main in PR #16099 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-04-26`.
- Subsystem: `agent`
