# NousResearch/hermes-agent · Passing profile fallback_providers config to agents (oneshot, kanban)

## Open now

- Nothing open on GitHub.

The members concern fallback_providers from profile config not reaching agents: one issue reports kanban worker agents not inheriting it, and two pull requests with near-identical titles propose passing it to AIAgent in oneshot. Whether the kanban and oneshot cases share a cause is not established by the titles alone.

## TL;DR

- 3 member(s): 0 open issue(s), 1 closed issue(s), 0 open PR(s), 1 merged PR(s), 1 PR(s) closed without merging.
- A fix was merged to main in PR #28409. Verify it addresses your case.
- **Recommended:** read PR #28409 (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_SPANNING`): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
- Pairwise link density `0.67`: 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

- #23362: Profile config fallback_providers not inherited by kanban worker agents

## Prior & competing PRs

- **#28409: fix(oneshot): pass fallback_providers from profile config to AIAgent (#23368)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`
  - files: `hermes_cli/oneshot.py`
  - fix hunks:
  - `hermes_cli/oneshot.py`

    ```diff
    @@ -301,6 +301,14 @@ def _run_agent(
             toolsets_list = sorted(_get_platform_tools(cfg, "cli"))
     
         session_db = _create_session_db_for_oneshot()
    +    # Read fallback chain from profile config — supports both the new list
    +    # format (fallback_providers) and the legacy single-dict (fallback_model).
    +    # Mirrors the same normalization in cli.py so oneshot workers (e.g. kanban
    +    # workers spawned via `hermes -p <profile> chat -q ...`) honour the
    +    # profile's fallback chain just like interactive sessions do.
    +    _fb = cfg.get("fallback_providers") or cfg.get("fallback_model") or []
    +    if isinstance(_fb, dict):
    +        _fb = [_fb] if _fb.get("provider") and _fb.get("model") else []
     
         agent = AIAgent(
             api_key=runtime.get("api_key"),
    ```

    ```diff
    @@ -313,6 +321,7 @@ def _run_agent(
             platform="cli",
             session_db=session_db,
             credential_pool=runtime.get("credential_pool"),
    +        fallback_model=_fb or None,
             # Interactive callbacks are intentionally NOT wired beyond this
             # one.  In oneshot mode there's no user sitting at a terminal:
             #   - clarify  → returns a synthetic "pick a default" instruction
    ```
- **#23368: fix(oneshot): pass fallback_providers from profile config to AIAgent**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#28409`

## Fix status

- Merged to main in PR #28409 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-05-19`.
- Subsystem: `hermes_cli`
