# NousResearch/hermes-agent · Missing RedactingFormatter import causing gateway crashes

## Open now

- 0 issues, 2 PRs open on GitHub.
- PR #8178: fix: resolve Feishu gateway startup and config status regressions
- PR #64049: fix(cli): show all messaging platforms in config, not just Telegram/Discord

The majority of these items concern a NameError crash caused by a missing RedactingFormatter import introduced after a logging refactor, with multiple duplicate bug reports and competing fix attempts. A smaller set of items covers related logging and CLI config display improvements.

## TL;DR

- 11 member(s): 0 open issue(s), 4 closed issue(s), 2 open PR(s), 1 merged PR(s), 4 PR(s) closed without merging.
- A fix was merged to main in PR #8103. Verify it addresses your case.
- **Recommended:** read PR #8103 (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: `partially_resolved` · deciding PR(s): `pr-8103`. 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.18`: 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

- #8044: \`NameError: name 'RedactingFormatter' is not defined\` crashes Gateway on startup
- #8090: \`NameError: name 'RedactingFormatter' is not defined\` crashes gateway on startup after #7991
- #8091: \[Bug\]: NameError: name 'RedactingFormatter' is not defined — gateway startup crash
- #8173: \[Bug\]: gateway startup can crash because RedactingFormatter is used without import

## Prior & competing PRs

- **#8103: fix(gateway): add missing RedactingFormatter import (salvage #8046)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`
  - files: `gateway/run.py`, `tests/gateway/test_runner_startup_failures.py`
  - fix hunks:
  - `gateway/run.py`

    ```diff
    @@ -8560,6 +8560,8 @@ async def start_gateway(config: Optional[GatewayConfig] = None, replace: bool =
         # verbosity=1    (-v):         INFO and above
         # verbosity=2+   (-vv/-vvv):   DEBUG
         if verbosity is not None:
    +        from agent.redact import RedactingFormatter
    +
             _stderr_level = {0: logging.WARNING, 1: logging.INFO}.get(verbosity, logging.DEBUG)
             _stderr_handler = logging.StreamHandler()
             _stderr_handler.setLevel(_stderr_level)
    ```
  - `tests/gateway/test_runner_startup_failures.py`

    ```diff
    @@ -132,6 +132,39 @@ async def test_runner_records_connected_platform_state_on_success(monkeypatch, t
         assert state["platforms"]["discord"]["error_message"] is None
     
     
    [redacted:email]
    +async def test_start_gateway_verbosity_imports_redacting_formatter(monkeypatch, tmp_path):
    +    """Verbosity != None must not crash with NameError on RedactingFormatter (#8044)."""
    +    monkeypatch.setenv("HERMES_HOME", str(tmp_path))
    +
    +    class _CleanExitRunner:
    +        def __init__(self, config):
    +            self.config = config
    +            self.should_exit_cleanly = True
    +            self.exit_reason = None
    +            self.adapters = {}
    +
    +        async def start(self):
    +            return True
    +
    +        async def stop(self):
    +            return None
    +
    +    monkeypatch.setattr("gateway.status.get_running_pid", lambda: None)
    +    monkeypatch.setattr("tools.skills_sync.sync_skills", lambda quiet=True: None)
    +    monkeypatch.setattr("hermes_logging.setup_logging", lambda hermes_home, mode: tmp_path)
    +    monkeypatch.setattr("hermes_logging._add_rotating_handler", lambda *args, **kwargs: None)
    +    monkeypatch.setattr("gateway.run.GatewayRunner", _CleanExitRunner)
    +
    +    from gateway.run import start_gateway
    +
    +    # verbosity=1 triggers the code path that uses RedactingFormatter.
    +    # Before the fix this raised NameError.
    +    ok = await start_gateway(config=GatewayConfig(), replace=False, verbosity=1)
    +
    +    assert ok is True
    +
    +
     @pytest.mark.asyncio
     async def test_start_gateway_replace_force_uses_terminate_pid(monkeypatch, tmp_path):
         monkeypatch.setenv("HERMES_HOME", str(tmp_path))
    ```
- **#8046: fix(gateway): add missing RedactingFormatter import**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#8103`
- **#8092: fix: add missing RedactingFormatter import to prevent gateway crash on -v (closes #8090)**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#8046`, `#8103`
- **#8101: fix(gateway): restore lazy import of RedactingFormatter after #7991**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`
- **#8178: fix: resolve Feishu gateway startup and config status regressions**. open
  - maintainer direction: category `superseded_by_pr`; implication `superseded`
  - files: `gateway/run.py`, `hermes_cli/config.py`, `tests/hermes_cli/test_placeholder_usage.py`
- **#18914: fix(cli): expand show_config messaging platforms to include all adapters**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#8178`
- **#64049: fix(cli): show all messaging platforms in config, not just Telegram/Discord**. open
  - maintainer direction: category `partial_fix`; implication `needs_llm`; refs `8a48c58bd`, `cb2fe3c7b803`, `#1322`, `#8103`, `#957`, `#1027`, `#1198`, `#1217`, `#926`, `#8046`, `#8047`, `#8058`, `#8092`, `#8090`, `#8099`, `#8101`, `#7991`, `#8044`, `#8091`, `#8173`, `#8178`, `#64049`, `#8238`, `#8273`, `#14622`, `#18914`, `#8175`, `#18949`, `#34668`, `#34671`, `#34653`, `#374151`
  - files: `hermes_cli/config.py`, `tests/hermes_cli/test_config.py`

## Fix status

- Merged to main in PR #8103 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-04-12`. This confirmation is old and may be out of date (a revert/reopen would not have invalidated it here); re-verify.
- Subsystem: `gateway`
