Affected area
Android app
What happened?
Observed: Hermes-Relay Android sideload v1.15.1 returns HTTP 401 with {"detail":"Invalid credentials"} when signing into a self-hosted Hermes Dashboard using its native Basic Auth provider.
The exact same Dashboard URL, username, and clipboard password authenticate successfully in Android Chrome. A direct scripted request to the same password-login endpoint also returns HTTP 200 and sets the expected session cookies.
Expected: The sideload app should authenticate with the same valid Basic Auth credentials accepted by the Dashboard web login and direct API request.
Reproduction steps
- Run a self-hosted Hermes Dashboard with authentication enabled and the native Basic Auth provider configured.
- Verify the Dashboard login works in Android Chrome.
- In Hermes-Relay Android sideload v1.15.1, configure the same private-LAN Dashboard URL.
- Enter the same username and paste the same password.
- Submit the Dashboard sign-in form.
- Observe
Dashboard sign-in failed - HTTP 401: {"detail":"Invalid credentials"}.
The failure reproduces after force-closing and reopening the app. The Google Play and sideload packages are both installed, but they have distinct application IDs and isolated app data.
Environment
- Hermes-Relay version/tag: android-v1.15.1
- Install surface: official sideload APK
- Android package:
com.axiomlabs.hermesrelay.sideload
- Android device and OS: not captured
- hermes-agent version: 0.21.0
- Connection mode: private LAN over HTTP
- Dashboard auth provider: native Basic Auth
Sanitized logs, screenshots, or traces
Dashboard sign-in failed - HTTP 401: {"detail":"Invalid credentials"}
Control checks against the same endpoint and credentials:
- Android Chrome Dashboard login: success
- Direct password-login API request: HTTP 200
- Session cookies returned by successful direct login:
- hermes_session_at
- hermes_session_rt
- hermes_session_provider
Upstream or standard-path notes
The Android app connects directly to the Hermes Dashboard. A locally installed Relay plugin is present but is not involved in this password-login request. Browser and direct API controls against the same Dashboard succeed.
The private Dashboard disables native PKCE advertisement so Android uses the advertised Basic Auth flow. This affects auth-flow selection only. The server's Basic Auth credential itself is proven valid by both browser and direct API controls.
Checklist
Affected area
Android app
What happened?
Observed: Hermes-Relay Android sideload v1.15.1 returns
HTTP 401with{"detail":"Invalid credentials"}when signing into a self-hosted Hermes Dashboard using its native Basic Auth provider.The exact same Dashboard URL, username, and clipboard password authenticate successfully in Android Chrome. A direct scripted request to the same password-login endpoint also returns HTTP 200 and sets the expected session cookies.
Expected: The sideload app should authenticate with the same valid Basic Auth credentials accepted by the Dashboard web login and direct API request.
Reproduction steps
Dashboard sign-in failed - HTTP 401: {"detail":"Invalid credentials"}.The failure reproduces after force-closing and reopening the app. The Google Play and sideload packages are both installed, but they have distinct application IDs and isolated app data.
Environment
com.axiomlabs.hermesrelay.sideloadSanitized logs, screenshots, or traces
Dashboard sign-in failed - HTTP 401: {"detail":"Invalid credentials"} Control checks against the same endpoint and credentials: - Android Chrome Dashboard login: success - Direct password-login API request: HTTP 200 - Session cookies returned by successful direct login: - hermes_session_at - hermes_session_rt - hermes_session_providerUpstream or standard-path notes
The Android app connects directly to the Hermes Dashboard. A locally installed Relay plugin is present but is not involved in this password-login request. Browser and direct API controls against the same Dashboard succeed.
The private Dashboard disables native PKCE advertisement so Android uses the advertised Basic Auth flow. This affects auth-flow selection only. The server's Basic Auth credential itself is proven valid by both browser and direct API controls.
Checklist