AdguardTeam/AdGuardHome · error
searching session by token: %w
Error message
searching session by token: %w
What it means
The auth middleware could not query the session store when resolving a session cookie into a user. The wrapped error comes from the sessions storage backend (e.g. JSON file or database).
Source
Thrown at internal/home/authhttp.go:528
}
return mw.userFromRequestBasicAuth(ctx, r)
}
// userFromCookie tries to retrieve a user based on the provided cookie value.
func (mw *authMiddlewareDefault) userFromCookie(
ctx context.Context,
val string,
) (u *aghuser.User, err error) {
t, err := sessionTokenFromHex(val)
if err != nil {
// Don't wrap the error because it's informative enough as is.
return nil, err
}
s, err := mw.sessions.FindByToken(ctx, t)
if err != nil {
return nil, fmt.Errorf("searching session by token: %w", err)
}
if s == nil {
return nil, nil
}
u, err = mw.users.ByLogin(ctx, s.UserLogin)
if err != nil {
return nil, fmt.Errorf("searching user by login %q: %w", s.UserLogin, err)
}
return u, nil
}
// sessionTokenFromHex converts a hexadecimal string into a session token.
func sessionTokenFromHex(val string) (token aghuser.SessionToken, err error) {
sess, err := hex.DecodeString(val)
if err != nil {View on GitHub (pinned to b41aefbe51)
Solutions
- Check the wrapped error and AdGuard Home logs for the storage-level cause
- Verify the working directory/sessions file is writable and not corrupted (restore from backup or delete sessions.json to force re-login)
- Avoid running two AdGuard Home instances against the same data directory
- Restart the service if a transient file lock was the cause
Defensive patterns
Strategy: try-catch
Try / catch
// Treat storage errors as 500; only nil,nil means anonymous
u, err := userFromRequest(r)
if err != nil { http.Error(w, "internal", 500); return } Prevention
- Back up and monitor the sessions data file
- Avoid concurrent instances sharing one working directory
- Handle 5xx by clearing cookies and re-authenticating
When it happens
Trigger: GET of any authenticated endpoint with a valid session cookie when Sessions.FindByToken returns an I/O, parse, or lock error from the session storage.
Common situations: Corrupted or concurrently-written sessions.json, permission problems on the data directory, disk issues.
Related errors
- searching user by login %q: %w
- decoding value: %w
- loading sessions: %w
- deleting sessions: %w
- storing session: %w
AI-assisted analysis of AdguardTeam/AdGuardHome@b41aefbe51 (2026-08-27).
Data as JSON: /api/errors/824f67ad61463c74.
Report an issue: GitHub.