Skip to content

[Bug]: Android sideload Basic Auth returns 401 for valid Dashboard credentials #541

Description

@chipsfromhell

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

  1. Run a self-hosted Hermes Dashboard with authentication enabled and the native Basic Auth provider configured.
  2. Verify the Dashboard login works in Android Chrome.
  3. In Hermes-Relay Android sideload v1.15.1, configure the same private-LAN Dashboard URL.
  4. Enter the same username and paste the same password.
  5. Submit the Dashboard sign-in form.
  6. 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

  • I searched existing issues first.
  • I removed secrets, tokens, private infrastructure, and personal names.
  • I included the affected version and install surface.

Activity

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

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions