chenhg5/cc-connect · error
copilot: session.delete: %s
Error message
copilot: session.delete: %s
What it means
DeleteSession sends a JSON-RPC `session/delete` request to the copilot CLI and this error is returned when the RPC response carries an error object whose code is not -32601 (method-not-found) or -32600 (invalid-request) — codes treated as 'feature unsupported, ignore'. Any other code means the CLI actively rejected the delete. The message contains the CLI's own error text.
Source
Thrown at agent/copilot/copilot.go:399
defer probe.close()
pingResp, err := probe.call(probeCtx, "ping", nil)
if err != nil || pingResp.Error != nil {
slog.Debug("copilot: DeleteSession ping failed", "error", err)
return nil
}
delResp, err := probe.call(probeCtx, "session.delete", map[string]any{"sessionId": sessionID})
if err != nil {
return nil
}
if delResp.Error != nil {
// method-not-found or invalid-request means unsupported
if delResp.Error.Code == -32601 || delResp.Error.Code == -32600 {
return nil
}
return fmt.Errorf("copilot: session.delete: %s", delResp.Error.Message)
}
var result copilotDeleteSessionResponse
if err := json.Unmarshal(delResp.Result, &result); err != nil {
// Ignore parse errors - treat as success
return nil
}
if !result.Success {
if result.Error != nil {
return fmt.Errorf("copilot: session.delete failed: %s", *result.Error)
}
return fmt.Errorf("copilot: session.delete failed: unknown error")
}
slog.Info("copilot: session deleted", "sessionId", sessionID)
return nil
}
// GetSessionHistory implements core.HistoryProvider.View on GitHub (pinned to 4000b2338a)
Solutions
- Refresh the session list with ListSessions and delete using a currently valid session ID
- Upgrade the copilot CLI so session/delete error codes match the supported protocol (unsupported is signaled by -32601/-32600)
- Ignore or special-case the error if the session is already gone (delete is idempotent in practice)
- Check the copilot CLI's own logs for the underlying cause
Example fix
// before
if err := a.DeleteSession(ctx, id); err != nil {
return fmt.Errorf("delete: %w", err) // hard fail on stale session
}
// after
if err := a.DeleteSession(ctx, id); err != nil {
slog.Warn("copilot session delete ignored", "id", id, "err", err) // tolerate stale IDs
} Defensive patterns
Strategy: try-catch
Validate before calling
// only delete IDs present in a fresh listing
sessions, err := a.ListSessions(ctx)
if err != nil { return err }
valid := false
for _, s := range sessions { if s.ID == sessionID { valid = true } }
if !valid { return fmt.Errorf("session %s not found; skip delete", sessionID) } Try / catch
if err := a.DeleteSession(ctx, id); err != nil {
var msg string
if errors.As(err, ...) || strings.Contains(err.Error(), "session.delete") {
slog.Warn("copilot delete rejected", "id", id, "detail", err)
// treat stale session as deleted
}
} Prevention
- Refresh session caches from ListSessions before deleting
- Treat delete as best-effort/idempotent for stale IDs
- Keep copilot CLI current so unsupported methods surface as -32601 (ignored) rather than other codes
When it happens
Trigger: Calling DeleteSession for a session the copilot process does not know about, an already-deleted/expired session, or a CLI whose session.delete implementation returns an unexpected error code (not -32601/-32600).
Common situations: Deleting a session that was already removed server-side; deleting sessions from an older copilot CLI version after an upgrade; stale session IDs cached by cc-connect after the copilot workspace was reset.
Related errors
- copilot: session.delete failed: %s
- copilot: session.delete failed: unknown error
- ping: %w
- copilotSession: handshake failed: %w
- ping timeout
AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06).
Data as JSON: /api/errors/7c77cf4739c52f2a.
Report an issue: GitHub.