jackwener/OpenCLI · error · UnsupportedDaemonPortEnvError
OPENCLI_DAEMON_PORT is no longer supported${suffix}. The Ope
Error message
OPENCLI_DAEMON_PORT is no longer supported${suffix}. The OpenCLI Chrome extension can only connect to localhost:${DEFAULT_DAEMON_PORT}. Unset OPENCLI_DAEMON_PORT and rerun opencli. What it means
OpenCLI's daemon transport no longer supports overriding the daemon port via the OPENCLI_DAEMON_PORT environment variable. The Chrome extension hard-codes its connection to the default daemon port, so any non-empty OPENCLI_DAEMON_PORT value makes assertSupportedDaemonPortEnv throw UnsupportedDaemonPortEnvError before a daemon request is made.
Source
Thrown at src/browser/daemon-transport.ts:16
import { DEFAULT_DAEMON_PORT, isIgnorableDaemonPortEnv, unsupportedDaemonPortEnvMessage } from '../constants.js';
const DAEMON_PORT = DEFAULT_DAEMON_PORT;
const DAEMON_URL = `http://127.0.0.1:${DAEMON_PORT}`;
const OPENCLI_HEADERS = { 'X-OpenCLI': '1' };
class UnsupportedDaemonPortEnvError extends Error {
constructor(value: string) {
super(unsupportedDaemonPortEnvMessage(value));
this.name = 'UnsupportedDaemonPortEnvError';
}
}
function assertSupportedDaemonPortEnv(): void {
const value = process.env.OPENCLI_DAEMON_PORT;
if (!isIgnorableDaemonPortEnv(value)) throw new UnsupportedDaemonPortEnvError(value!);
}
export interface DaemonStatus {
ok: boolean;
pid: number;
uptime: number;
daemonVersion?: string;
extensionConnected: boolean;
extensionVersion?: string;
extensionCompatRange?: string;
contextId?: string;
profileRequired?: boolean;
profileDisconnected?: boolean;
profiles?: BrowserProfileStatus[];
pending: number;
commandResultUnknown?: number;
memoryMB: number;
port: number;View on GitHub (pinned to 49907e53dc)
Solutions
- Unset the variable: `unset OPENCLI_DAEMON_PORT` in the current shell
- Remove `export OPENCLI_DAEMON_PORT=...` from ~/.bashrc, ~/.zshrc, .env files, or CI configuration
- Restart the terminal/CI job so the environment is clean and rerun `opencli`
- Verify the extension is pointed at localhost on the default daemon port
Example fix
// before (shell) export OPENCLI_DAEMON_PORT=9333 opencli ... // after (shell) unset OPENCLI_DAEMON_PORT opencli ...
Defensive patterns
Strategy: validation
Validate before calling
if (process.env.OPENCLI_DAEMON_PORT) {
console.warn('OPENCLI_DAEMON_PORT is unsupported; unsetting it');
delete process.env.OPENCLI_DAEMON_PORT;
}
await opencli.requestDaemon(); Type guard
function hasNoDaemonPortEnv(): boolean { return !process.env.OPENCLI_DAEMON_PORT; } Try / catch
try { await requestDaemon(); }
catch (e) {
if (e instanceof UnsupportedDaemonPortEnvError) {
delete process.env.OPENCLI_DAEMON_PORT;
await requestDaemon();
} else throw e;
} Prevention
- Never export OPENCLI_DAEMON_PORT in shell rc files or .env
- Grep CI configs for OPENCLI_DAEMON_PORT after upgrading
- Document the port is fixed to the extension's default
When it happens
Trigger: Calling any daemon-backed operation (e.g. requestDaemon) while the OPENCLI_DAEMON_PORT environment variable is set to a value not considered ignorable (empty/undefined).
Common situations: Developers upgrading from an older OpenCLI version that allowed custom daemon ports and still export OPENCLI_DAEMON_PORT=9222 in shell rc files, CI configs, or .env files loaded into the Node process.
Related errors
- [runtime] Invalid ${envVar}="${raw}", using default ${fallba
- profile-required
- Detached HEAD — checkout a branch first
- Missing ${label}
- Invalid ${label}: ${raw}
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/ab5da76584770270.
Report an issue: GitHub.