openai / openai/codex

Support Linux Codex CLI as a ChatGPT Remote Control host

Open
#38,115 5 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug CLI enhancement remote
Dominant language
Rust
Stars
125k
Forks
19.5k
PR merge metrics
PR metrics pending

Description

What version of Codex CLI is running?

codex-cli 0.147.0

What subscription do you have?

ChatGPT Pro

Which model were you using?

No response

What platform is your computer?

Linux 7.1.6-1-cachyos x86_64 unknown

What terminal emulator and version are you using (if applicable)?

konsole 26.04.3, fish

Codex doctor report
{
  "schemaVersion": 1,
  "generatedAt": "1786509126s since unix epoch",
  "overallStatus": "ok",
  "codexVersion": "0.147.0",
  "checks": {
    "app_server.status": {
      "id": "app_server.status",
      "category": "app-server",
      "status": "ok",
      "summary": "background server is not running",
      "details": {
        "control socket": "/home/i0s/.codex/app-server-control/app-server-control.sock",
        "daemon state dir": "/home/i0s/.codex/app-server-daemon",
        "mode": "ephemeral",
        "pid file": "/home/i0s/.codex/app-server-daemon/app-server.pid (missing)",
        "settings": "/home/i0s/.codex/app-server-daemon/settings.json (missing)",
        "status": "not running",
        "update-loop pid file": "/home/i0s/.codex/app-server-daemon/app-server-updater.pid (missing)"
      },
      "remediation": null,
      "durationMs": 0
    },
    "auth.credentials": {
      "id": "auth.credentials",
      "category": "auth",
      "status": "ok",
      "summary": "auth is configured",
      "details": {
        "auth file": "/home/i0s/.codex/auth.json",
        "auth storage mode": "File",
        "stored API key": "false",
        "stored ChatGPT tokens": "true",
        "stored agent identity": "false",
        "stored auth mode": "chatgpt"
      },
      "remediation": null,
      "durationMs": 0
    },
    "config.load": {
      "id": "config.load",
      "category": "config",
      "status": "ok",
      "summary": "config loaded",
      "details": {
        "CODEX_HOME": "/home/i0s/.codex",
        "config.toml": "/home/i0s/.codex/config.toml",
        "config.toml parse": "ok",
        "cwd": "/home/i0s/Documents/projects/agentic-news",
        "enabled feature flags": "shell_tool, view_image, unified_exec, shell_snapshot, code_mode_host, terminal_resize_reflow, sqlite, memories, hooks, enable_request_compression, multi_agent, apps, tool_search_always_defer_mcp_tools, tool_suggest, plugins, in_app_browser, in_app_updates, browser_use, browser_use_full_cdp_access, browser_use_external, computer_use, remote_plugin, plugin_sharing, image_generation, resize_all_images, item_ids, skill_mcp_dependency_install, skill_search, mentions_v2, steer, guardian_approval, goals, collaboration_modes, tool_call_mcp_elicitation, auth_elicitation, personality, fast_mode, tui_app_server, remote_compaction_v2, workspace_dependencies",
        "feature flag overrides": "memories=true",
        "feature flags enabled": "40",
        "log dir": "/home/i0s/.codex/log",
        "mcp servers": "0",
        "model": "gpt-5.6-terra",
        "model provider": "openai",
        "sqlite home": "/home/i0s/.codex"
      },
      "remediation": null,
      "durationMs": 0
    },
    "git.environment": {
      "id": "git.environment",
      "category": "git",
      "status": "ok",
      "summary": "git version 2.55.0",
      "details": {
        ".git entry": "directory",
        "PATH git #1": "/usr/bin/git",
        "PATH git entries": "1",
        "git branch": "324-normalized-rendition-schema",
        "git build options": "git version 2.55.0; cpu: x86_64; built from commit: e9019fcafe0040228b8631c30f97ae1adb61bcdc; sizeof-long: 8; sizeof-size_t: 8; shell-path: /bin/sh; rust: enabled; feature: fsmonitor--daemon; gettext: enabled; libcurl: 8.21.0; OpenSSL: OpenSSL 3.6.3 9 Jun 2026; zlib-ng: 2.3.3; SHA-1: SHA1_DC; SHA-256: SHA256_BLK; default-ref-format: files; default-hash: sha1",
        "git exec path": "/usr/lib/git-core",
        "git version": "git version 2.55.0",
        "repo detected": "true",
        "repo root": "/home/i0s/Documents/projects/agentic-news",
        "selected git": "/usr/bin/git"
      },
      "remediation": null,
      "durationMs": 19
    },
    "installation": {
      "id": "installation",
      "category": "install",
      "status": "ok",
      "summary": "installation looks consistent",
      "details": {
        "PATH codex #1": "/home/i0s/.local/share/npm-global/bin/codex",
        "current executable": "/home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin/codex",
        "install context": "npm (package /home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl, bin /home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin, resources /home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-resources, path /home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-path)",
        "managed by bun": "false",
        "managed by npm": "true",
        "managed by pnpm": "false",
        "managed package root": "/home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex",
        "npm update target": "/home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex"
      },
      "remediation": null,
      "durationMs": 49
    },
    "mcp.config": {
      "id": "mcp.config",
      "category": "mcp",
      "status": "ok",
      "summary": "no MCP servers configured",
      "details": {},
      "remediation": null,
      "durationMs": 0
    },
    "network.env": {
      "id": "network.env",
      "category": "network",
      "status": "ok",
      "summary": "network-related environment looks readable",
      "details": {
        "proxy env vars": "none"
      },
      "remediation": null,
      "durationMs": 0
    },
    "network.provider_reachability": {
      "id": "network.provider_reachability",
      "category": "reachability",
      "status": "ok",
      "summary": "active provider endpoints are reachable over HTTP",
      "details": {
        "ChatGPT base URL": "https://chatgpt.com/backend-api/ reachable (HTTP 404)",
        "reachability mode": "ChatGPT auth"
      },
      "remediation": null,
      "durationMs": 129
    },
    "network.websocket_reachability": {
      "id": "network.websocket_reachability",
      "category": "websocket",
      "status": "ok",
      "summary": "Responses WebSocket handshake succeeded",
      "details": {
        "DNS": "2 IPv4, 2 IPv6, first IPv4",
        "auth mode": "chatgpt",
        "connect timeout": "15000 ms",
        "endpoint": "wss://chatgpt.com/backend-api/<redacted>",
        "handshake result": "HTTP 101 Switching Protocols",
        "model provider": "openai",
        "models etag present": "true",
        "provider name": "OpenAI",
        "proxy env vars": "none",
        "reasoning header": "false",
        "server model present": "false",
        "supports websockets": "true",
        "wire API": "responses"
      },
      "remediation": null,
      "durationMs": 671
    },
    "runtime.provenance": {
      "id": "runtime.provenance",
      "category": "runtime",
      "status": "ok",
      "summary": "running npm on linux-x86_64",
      "details": {
        "commit": "unknown",
        "current executable": "/home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin/codex",
        "install method": "npm (package /home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl, bin /home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin, resources /home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-resources, path /home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-path)",
        "platform": "linux-x86_64",
        "version": "0.147.0"
      },
      "remediation": null,
      "durationMs": 0
    },
    "runtime.search": {
      "id": "runtime.search",
      "category": "search",
      "status": "ok",
      "summary": "search is OK (bundled)",
      "details": {
        "search command": "/home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-path/rg",
        "search command readiness": "file exists",
        "search provider": "bundled"
      },
      "remediation": null,
      "durationMs": 0
    },
    "sandbox.helpers": {
      "id": "sandbox.helpers",
      "category": "sandbox",
      "status": "ok",
      "summary": "sandbox configuration is readable",
      "details": {
        "approval policy": "OnRequest",
        "codex-linux-sandbox helper": "/home/i0s/.codex/tmp/arg0/codex-arg0tWNPmm/codex-linux-sandbox",
        "execve wrapper helper": "/home/i0s/.codex/tmp/arg0/codex-arg0tWNPmm/codex-execve-wrapper",
        "filesystem sandbox": "restricted",
        "network sandbox": "restricted"
      },
      "remediation": null,
      "durationMs": 0
    },
    "state.paths": {
      "id": "state.paths",
      "category": "state",
      "status": "ok",
      "summary": "state paths and databases are inspectable",
      "details": {
        "CODEX_HOME": "/home/i0s/.codex (dir)",
        "active rollout files": "97 files, 105755398 total bytes, 1090261 average bytes",
        "archived rollout files": "0 files, 0 total bytes, 0 average bytes",
        "goals DB": "/home/i0s/.codex/goals_1.sqlite (file)",
        "goals DB integrity": "ok",
        "log DB": "/home/i0s/.codex/logs_2.sqlite (file)",
        "log DB integrity": "ok",
        "log dir": "/home/i0s/.codex/log (dir)",
        "memories DB": "/home/i0s/.codex/memories_1.sqlite (file)",
        "memories DB integrity": "ok",
        "queue DB": "/home/i0s/.codex/queue_1.sqlite (file)",
        "queue DB integrity": "ok",
        "sqlite home": "/home/i0s/.codex (dir)",
        "state DB": "/home/i0s/.codex/state_5.sqlite (file)",
        "state DB integrity": "ok",
        "thread history DB": "/home/i0s/.codex/thread_history_1.sqlite (file)",
        "thread history DB integrity": "ok"
      },
      "remediation": null,
      "durationMs": 84
    },
    "state.rollout_db_parity": {
      "id": "state.rollout_db_parity",
      "category": "threads",
      "status": "ok",
      "summary": "rollout files and state DB thread inventory agree",
      "details": {
        "default model provider": "openai",
        "rollout DB active files": "97",
        "rollout DB active rows": "97",
        "rollout DB archive mismatches": "0",
        "rollout DB archived files": "0",
        "rollout DB archived rows": "0",
        "rollout DB duplicate DB paths": "0",
        "rollout DB duplicate rollout thread ids": "0",
        "rollout DB malformed file names": "0",
        "rollout DB missing active rows": "0",
        "rollout DB missing archived rows": "0",
        "rollout DB model providers": "openai=97",
        "rollout DB rows": "97",
        "rollout DB scan cap reached": "false",
        "rollout DB scan errors": "0",
        "rollout DB sources": "subagent:thread_spawn=61, cli=14, vscode=13, subagent:other=9",
        "rollout DB stale rows": "0"
      },
      "remediation": null,
      "durationMs": 32
    },
    "system.environment": {
      "id": "system.environment",
      "category": "system",
      "status": "ok",
      "summary": "OS language en-US",
      "details": {
        "EDITOR": "not set",
        "LANG": "en_US.UTF-8",
        "VISUAL": "not set",
        "os": "CachyOS Linux Rolling Release [64-bit]",
        "os language": "en-US",
        "os type": "CachyOS Linux",
        "os version": "Rolling Release"
      },
      "remediation": null,
      "durationMs": 5
    },
    "terminal.env": {
      "id": "terminal.env",
      "category": "terminal",
      "status": "ok",
      "summary": "terminal metadata was detected",
      "details": {
        "COLORFGBG": "15;0",
        "COLORTERM": "truecolor",
        "DISPLAY": "present",
        "WAYLAND_DISPLAY": "present",
        "color output": "enabled",
        "effective locale": "en_US.UTF-8",
        "stderr is terminal": "true",
        "stdin is terminal": "true",
        "stdout is terminal": "true",
        "terminal": "Konsole",
        "terminal size": "120x35",
        "terminal version": "260403"
      },
      "remediation": null,
      "durationMs": 0
    },
    "terminal.title": {
      "id": "terminal.title",
      "category": "title",
      "status": "ok",
      "summary": "terminal title default",
      "details": {
        "terminal title activity": "true",
        "terminal title items": "activity, project-name",
        "terminal title project source": "git repo root",
        "terminal title project value": "agentic-news",
        "terminal title source": "default"
      },
      "remediation": null,
      "durationMs": 0
    },
    "updates.status": {
      "id": "updates.status",
      "category": "updates",
      "status": "ok",
      "summary": "update configuration is locally consistent",
      "details": {
        "cached latest version": "0.147.0",
        "check for update on startup": "true",
        "last checked at": "2026-08-11T10:05:05.870309787Z",
        "latest version": "0.147.0",
        "latest version status": "current version is not older",
        "npm update target": "/home/i0s/.local/share/npm-global/lib/node_modules/@openai/codex",
        "update action": "npm install -g @openai/codex",
        "version cache": "/home/i0s/.codex/version.json"
      },
      "remediation": null,
      "durationMs": 369
    }
  }
}
What issue are you seeing?

Codex CLI works natively on my CachyOS Linux workstation and can access my local repositories, development tools, and authenticated CLIs such as glab. However, I cannot register the Linux Codex CLI host with ChatGPT Remote Control or access that host through the ChatGPT web or mobile interface.

The current Remote workflow requires the ChatGPT desktop application, which is available only for Windows and macOS. Signing in to Codex CLI with the same ChatGPT account does not expose local Linux threads, repositories, approvals, diffs, terminal output, or task progress in ChatGPT.

This creates a significant platform gap: Codex already runs locally on Linux, but Linux users cannot remotely start, continue, monitor, or approve that work through ChatGPT. Using a Windows or macOS computer as a bridge is not a reasonable solution for users whose primary development environment is Linux.

This is especially limiting for workflows involving private GitLab repositories. On my Linux host, Codex can use an already authenticated glab session to read issues, create branches, implement changes, run tests, push commits, and create merge requests. I want to monitor and control that same local workflow securely from ChatGPT on the web or iOS without changing operating systems or introducing another computer.

What steps can reproduce the bug?

Install and authenticate Codex CLI on a Linux system.
Run Codex inside a local Git repository.
Confirm that Codex can access the repository, shell, and locally authenticated development tools.
Sign in to ChatGPT on the web or iOS using the same account.
Attempt to register the Linux Codex CLI installation as a Remote Control host.
Attempt to open, continue, monitor, or approve the local Codex thread from ChatGPT.
Observe that no supported Linux host pairing or registration mechanism is available.
Observe that the local CLI thread and environment cannot be accessed through ChatGPT Remote Control.

This is not dependent on a specific repository, model, prompt, terminal emulator, or Git provider.

What steps can reproduce the bug?

Uploaded thread: 019ff437-e381-7670-b15d-c39fbee03365

What is the expected behavior?

Codex CLI on Linux should be able to operate as an official ChatGPT Remote Control host.

A Linux user should be able to:

Securely pair a local Codex CLI installation with their ChatGPT account.
See eligible local Codex threads and projects in ChatGPT web and mobile.
Start, continue, and monitor tasks running on the Linux host.
Review diffs, test results, terminal output, screenshots, and task progress remotely.
Approve or reject consequential actions remotely.
Preserve the Linux host’s existing filesystem permissions, network sandbox, credentials, and approval policies.
Use provider-neutral Git workflows, including private GitLab repositories and authenticated tools such as glab.
Revoke paired devices and remote access from either the Linux host or ChatGPT account settings.

Ideally, OpenAI should also provide an official ChatGPT Work desktop application for Linux. However, enabling Codex CLI itself to act as a secure Remote host would address the core development workflow without requiring a full Linux GUI application.

Additional information

Linux is a major software-development platform and already has first-class Codex CLI support. The local execution capability therefore exists; the missing component is a supported connection between the Linux Codex host and the ChatGPT Remote interface.

The architecture should not require users to install Windows or macOS, maintain a second computer, or route Linux development through an operating-system bridge.

GitHub should not be a prerequisite either. Remote Control operates at the host, project, shell, and approval layers, so it should remain independent of the repository provider. Existing local Git credentials and tools such as git, glab, or other provider CLIs should continue to work within the host’s permission boundaries.

Related uploaded thread:

019ff437-e381-7670-b15d-c39fbee03365

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the ChatGPT Remote Control host behavior with codex-cli 0.147.0 on Linux and review the provided Codex doctor report, especially the app-server status and control socket details. Done means the Linux Codex CLI is supported as a Remote Control host, but the issue does not identify source files, tests, or an implementation path.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux, rust
Domain
cli, operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.