diegosouzapw/OmniRoute · error · Error
Browser login is unavailable for managed lease connections
Error message
Browser login is unavailable for managed lease connections
What it means
Entry guard in startSession/harvestSession: isConnectionUnavailableToAuxiliaryActivity reported the connection as tied to a managed lease, so auxiliary browser-login activity is refused. Means the connection's lifecycle is controlled elsewhere (lease/cooldown management) and launching a VNC container or harvesting credentials against it now could race that machinery — a policy rejection, not a failure.
Solutions
- Wait until the managed lease releases the connection and retry browser login
- Use a different (non-managed) provider connection for browser login
- Do not force-start a session: bypassing the guard can corrupt lease state
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/lib/vncSession/service.ts:158 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25).
Data as JSON: /api/errors/b35cd38a8562425b.
Report an issue: GitHub.
Appendix: source
Thrown at src/lib/vncSession/service.ts:158
async function publishedPort(containerName: string, containerPort: number): Promise<number> {
const result = await docker(["port", containerName, `${containerPort}/tcp`], {
timeoutMs: 10_000,
});
if (result.code !== 0) {
throw new Error(result.err.trim() || `Could not resolve published port ${containerPort}`);
}
for (const line of result.out.split(/\r?\n/)) {
const match = line.trim().match(/:(\d+)$/);
if (match) return Number(match[1]);
}
throw new Error(`Docker did not publish container port ${containerPort}`);
}
export async function startSession(connectionId: string): Promise<VncSession> {
if (await isConnectionUnavailableToAuxiliaryActivity(connectionId))
throw new Error("Browser login is unavailable for managed lease connections");
await reconcileStaleContainers();
const connection = await getProviderConnectionById(connectionId);
if (!connection) throw new Error("Provider connection not found");
const providerId = typeof connection.provider === "string" ? connection.provider : "";
const provider = getVncProvider(providerId);
if (!provider) {
throw new Error(`Browser login is not supported for provider '${providerId || "unknown"}'`);
}
const existing = findActiveSessionForConnection(connectionId);
if (existing) return existing;
if (SESSIONS.size >= VNC_CONFIG.maxSessions) {
throw new Error(`Maximum ${VNC_CONFIG.maxSessions} concurrent browser-login sessions reached`);
}
const sessionId = randomUUID();View on GitHub (pinned to a179ffed5b)