Devolutions/UniGetUI · error · InvalidOperationException
The current UniGetUI session cannot update manager packages.
Error message
The current UniGetUI session cannot update manager packages.
What it means
Thrown by the IPC v3 per-manager update endpoint when OnUpgradeAllForManager is null. It mirrors error 80 but targets a single package manager (the 'manager' query selects which). HandleCommandAsync converts it to HTTP 400.
Source
Thrown at src/UniGetUI.Interface.IpcApi/IpcServer.cs:1614
"The current UniGetUI session cannot update all packages."
);
}
OnUpgradeAll.Invoke(null, EventArgs.Empty);
return IpcCommandResult.Success("update-all");
}
);
}
private async Task V3_UpdateAllPackagesForManager(HttpContext context)
{
await HandleCommandAsync(
context,
() =>
{
if (OnUpgradeAllForManager is null)
{
throw new InvalidOperationException(
"The current UniGetUI session cannot update manager packages."
);
}
string managerName = GetRequiredQueryValue(context, "manager");
OnUpgradeAllForManager.Invoke(null, managerName);
return IpcCommandResult.Success("update-manager");
}
);
}
private static async Task HandlePackageActionAsync(
HttpContext context,
Func<IpcPackageActionRequest, Task<IpcPackageOperationResult>> action
)
{
if (!AuthenticateToken(context.Request.Query["token"]))
{View on GitHub (pinned to 9b1d7d0eab)
Solutions
- Subscribe to OnUpgradeAllForManager in the host before starting the listener: ipcServer.OnUpgradeAllForManager += (_, name) => PMManager.UpgradeAllPackagesForManager(name);
- Verify the requested manager loaded successfully (PMPEngagement) before exposing its endpoint.
- As a caller, branch on the 400 body: 'session cannot update manager packages' is not retryable without restarting/re-wiring the host.
Example fix
// before: OnUpgradeAllForManager null -> HTTP 400
// after:
ipcServer.OnUpgradeAllForManager += (_, managerName) =>
PMManager.GetManager(managerName)?.UpgradeAllPackages(); Defensive patterns
Strategy: validation
Validate before calling
// Client: detect the unavailable-per-manager response.
var body = await response.Content.ReadAsStringAsync();
if (response.StatusCode == HttpStatusCode.BadRequest &&
body == "The current UniGetUI session cannot update manager packages.")
return Result.Unavailable(managerName); Prevention
- Wire OnUpgradeAllForManager before starting the IPC listener.
- Confirm the target manager loaded (PMManager.GetManager(name) != null) before exposing the endpoint.
- Surface this 400 as 'operation not supported' to the user, not as a transient retry.
When it happens
Trigger: Calling V3_UpdateAllPackagesForManager (with ?manager=<name>) while OnUpgradeAllForManager has no subscriber, or the manager name is valid but the session did not wire per-manager upgrades.
Common situations: Standalone/automated IPC use without the GUI host; invoking the endpoint during startup race before subscription; the target manager failed to initialize so the handler was never attached.
Related errors
- The current UniGetUI session cannot update all packages.
- The request body is required.
- The route value "{key}" is required.
- The query value "{key}" is required.
- GitHub request failed with HTTP {(int)response.StatusCode} (
AI-assisted analysis of Devolutions/UniGetUI@9b1d7d0eab (2026-08-13).
Data as JSON: /api/errors/ad13621cab0857f5.
Report an issue: GitHub.