openai / openai/codex

Codex Desktop: request an authorized local bridge for project catalog and thread activation

Open
#40,535 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

app app-server enhancement
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

Summary

Codex Desktop exposes first-party dynamic tools such as codex_app.list_projects, codex_app.list_threads, and codex_app.navigate_to_codex_page to eligible model turns. A local Codex plugin/MCP application cannot call the same host capabilities directly, so it cannot build a deterministic project picker or open an exact existing Desktop thread without a model-mediated workaround.

Environment

  • Windows Codex Desktop: 26.818.8289.0
  • Bundled Codex CLI: 0.149.0-alpha.4.3
  • Separate local plugin runtime: Codex App Server over stdio

Verified behavior

  1. codex_app.list_projects in a Desktop task returns real project IDs, user-facing names, roots, and host IDs.
  2. The same root can belong to multiple distinct Desktop project IDs, so cwd/root cannot be used as project identity.
  3. App Server 0.149 exposes project/list and related project methods.
  4. A separate App Server process using the same CODEX_HOME can read existing threads, but project/list returns an empty list and those threads have projectId: null.
  5. Plugin UI window.openai.callTool can call the plugin's own MCP tools, but no documented API invokes first-party codex_app host tools.
  6. App Server does not expose an equivalent of Desktop thread activation/navigation. thread/resume is not a Desktop navigation operation.

Requested capability

Please expose an authenticated local host bridge for supported Codex Desktop clients/plugins:

Read-only project catalog

desktop/project/list

Returns the same canonical Desktop project identity used by codex_app.list_projects, including at least hostId, projectId, name/label, roots, and repository status.

Activate an existing Desktop thread

desktop/thread/activate

Validates hostId, projectId, and threadId, then opens/focuses that existing task in the most recently focused Desktop window. It must not create, fork, resume, rename, archive, or send a message.

Security expectations

  • Loopback or authenticated local transport only.
  • Explicit host capability grant for plugins/clients.
  • Project and thread identity consistency checks.
  • Minimal metadata for list operations; no full history required.
  • Clear unsupported/denied/not-found errors.
  • No reliance on private Desktop databases or UI automation.

Why existing APIs are insufficient

Using project/import in every external App Server creates a second project registry that must be synchronized with Desktop. Asking a model turn to call codex_app for every picker refresh or navigation click is non-deterministic, consumes tokens, and mutates conversation history. Neither is a stable Desktop integration contract.

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 comparing the existing codex_app.list_projects, project/list, thread/resume, window.openai.callTool, and project/import paths described in the issue. Trace how Desktop project and thread identities are validated and how local clients are authorized. Done means a reviewed design and implementation for read-only project listing and safe Desktop thread activation with explicit errors and capability checks.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api, authentication, desktop, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.