dagger/dagger · error
resolve session socket %q: empty session ID
Error message
resolve session socket %q: empty session ID
What it means
ResolveSessionSocket found client metadata but its SessionID is empty, so the socket handle cannot be keyed to a session for lookup. The request carries a malformed/partial session identity rather than a missing one — a guard against resolving a session socket under an anonymous context.
Source
Thrown at core/socket.go:107
PortForwardVal: persisted.PortForward,
}, nil
}
//nolint:dupl // symmetric with resolveSessionSecret; sharing hides Socket vs Secret semantics
func ResolveSessionSocket(ctx context.Context, socket *Socket) (*Socket, error) {
if socket == nil {
return nil, nil
}
if socket.Handle == "" {
return socket, nil
}
clientMetadata, err := engine.ClientMetadataFromContext(ctx)
if err != nil {
return nil, fmt.Errorf("resolve session socket %q: current client metadata: %w", socket.Handle, err)
}
if clientMetadata.SessionID == "" {
return nil, fmt.Errorf("resolve session socket %q: empty session ID", socket.Handle)
}
cache, err := dagql.EngineCache(ctx)
if err != nil {
return nil, fmt.Errorf("resolve session socket %q: current dagql cache: %w", socket.Handle, err)
}
resolvedAny, err := cache.ResolveSessionResource(ctx, clientMetadata.SessionID, clientMetadata.ClientID, socket.Handle)
if err != nil {
return nil, err
}
resolved, ok := resolvedAny.(*Socket)
if !ok {
return nil, fmt.Errorf("resolve session socket %q: bound value is %T", socket.Handle, resolvedAny)
}
if resolved.Handle != "" {
return nil, fmt.Errorf("resolve session socket %q: bound socket is still a handle", socket.Handle)
}
return resolved, nil
}View on GitHub (pinned to 82ba2681db)
Solutions
- Ensure the client establishes a real session (SessionID set) before using host sockets
- Re-run the call from a properly initialized CLI/session context
- Check for middleware or custom API clients that strip the session ID from metadata
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at core/socket.go:107 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05).
Data as JSON: /api/errors/ed729c6020364a41.
Report an issue: GitHub.