Skip to content

fix(dashboard): allow trusted proxy hosts on loopback - #68645

Closed
martinramos002-bot wants to merge 1 commit into
NousResearch:mainfrom
martinramos002-bot:fix/dashboard-trusted-proxy-hosts-v2
Closed

fix(dashboard): allow trusted proxy hosts on loopback#68645
martinramos002-bot wants to merge 1 commit into
NousResearch:mainfrom
martinramos002-bot:fix/dashboard-trusted-proxy-hosts-v2

Conversation

@martinramos002-bot

@martinramos002-bot martinramos002-bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add HERMES_DASHBOARD_ALLOWED_HOSTS for exact reverse-proxy Host values while the dashboard remains bound to loopback
  • keep explicit non-loopback binds on their existing exact-match behavior
  • reject malformed bracketed Host values instead of ignoring invalid suffixes
  • document the environment variable with a neutral example

Security properties

  • the allowlist applies only when bound_host is localhost, 127.0.0.1, or ::1
  • unlisted hostnames remain rejected
  • the setting does not change the bind interface
  • external access still requires a reverse proxy that terminates TLS, enforces authentication and access controls, and does not expose the loopback upstream
  • bracket notation is accepted only for IPv6, with an optional numeric port

Validation

  • pytest -q tests/hermes_cli/test_web_server_host_header.py12 passed
  • ruff check hermes_cli/web_server.py tests/hermes_cli/test_web_server_host_header.py — passed
  • git diff --check — passed
  • pre-publication sensitive-data scan — no private hostnames, paths, identifiers, or credentials

@martinramos002-bot
martinramos002-bot force-pushed the fix/dashboard-trusted-proxy-hosts-v2 branch from 845e4bc to 8d48538 Compare July 21, 2026 13:57
@alt-glitch alt-glitch added type/security Security vulnerability or hardening P3 Low — cosmetic, nice to have comp/dashboard Web dashboard / control panel UI (dashboard/, landing) area/auth Authentication, OAuth, credential pools labels Jul 21, 2026
@martinramos002-bot
martinramos002-bot marked this pull request as ready for review July 21, 2026 14:17
@martinramos002-bot

Copy link
Copy Markdown
Contributor Author

Validation update: head 8d48538a145e91a10ab538e0d3e8e3b29d25a574 completed all 37 GitHub checks with 0 failures and 0 pending. Local Host-header suite: 12 passed; Ruff and git diff --check passed. The security review findings around non-loopback binds, malformed bracketed hosts, and reverse-proxy authentication guidance are addressed in this head.

Copilot AI review requested due to automatic review settings July 21, 2026 14:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@teknium1

Copy link
Copy Markdown
Contributor

Thanks for the focused Host-header handling and documentation work.

This automated hermes-sweeper review is closing this as not_planned under the repository's env-var-for-config policy:

  • The PR introduces HERMES_DASHBOARD_ALLOWED_HOSTS as a user-facing behavioral setting (hermes_cli/web_server.py, commit 8d48538a145e91a10ab538e0d3e8e3b29d25a574).
  • AGENTS.md:102-106 requires non-secret settings to live in config.yaml, not a new HERMES_* environment variable.
  • The underlying limitation is real on current main: loopback Host validation accepts only loopback names (hermes_cli/web_server.py:493-496).

Please re-scope any follow-up to a dashboard config.yaml setting and its normal configuration/setup integration, rather than an operator-facing environment variable.


Closed as not-planned per standing maintainer policy (env-var-for-config). This is a design-direction decision, not a code-quality judgment — see the Contribution Rubric in AGENTS.md for what the project is looking for. If you believe this policy was misapplied to your change, comment here and a maintainer will take a look.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/auth Authentication, OAuth, credential pools comp/dashboard Web dashboard / control panel UI (dashboard/, landing) P3 Low — cosmetic, nice to have sweeper:not-planned Sweeper: closed per standing maintainer policy (design direction) type/security Security vulnerability or hardening

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants