Codex Project Tabs
Keep separate Codex conversations open as ordinary VS Code editor tabs. Choose a project for each conversation, arrange tabs side by side, and return to saved chats from the Explorer.
Windows x64 · Regular release · Korean-first interface · Independent community extension. This is not an official OpenAI or Anthropic product. It uses your locally installed official Codex CLI through codex app-server.
What it does
- Creates an independent editor tab for every new conversation, including empty chats.
- Adds a new-chat button to the top-right editor toolbar. It opens a conversation for the active project.
- Keeps each conversation attached to its chosen project folder and supports concurrent conversations across projects.
- Streams replies, renders Markdown, and shows command output and file changes.
- Displays supported command/file approval requests and user questions in the relevant conversation.
- Provides stop, rename, model selection, and read-only/project-edit/bypass permission modes.
- Accepts additional instructions while Codex is working. Send and Stop remain available together, and failed submissions return to your draft.
- Groups conversations by project in the Explorer and restores saved history after VS Code restarts.
- Preserves unfinished message drafts when switching tabs and supports Korean IME input.
Image and file attachments
Paste a screenshot or image with Ctrl+V, drag files into the composer, or use the attachment button to choose files. Remove an attachment with its × button before sending. Images can be sent without text and attachments can be included in follow-up instructions while Codex is working.
PNG, JPEG, GIF and WebP images use Codex image inputs. Other files, including text, PDF and Office documents, are copied locally and supplied as file references; reading those formats depends on the tools available to Codex and the selected permissions. The extension does not turn every document into model-readable text itself.
Each message accepts up to 10 files, 20 MiB per file, 50 MiB total. Clipboard file paste works when VS Code receives file data from the operating system; use drag and drop or the picker if Explorer/browser clipboard contents are not exposed as files. Plain text paste keeps working normally.
If the attachment button is missing, an older version is still running. Install the latest release and run Developer: Reload Window after ongoing work finishes. The legacy local-workbench.codex-project-tabs and public kkwon91.codex-project-tabs installations share command IDs and must not run together. Preserve legacy conversations before consolidating into the public installation.
Draft attachments and failed submissions are restored. Copies are retained under VS Code extension storage to support conversation history, including after restarting VS Code. Removing a draft chip does not erase an already stored copy or Codex history. See PRIVACY.md.
Getting started
You need desktop VS Code 1.95 or later on Windows x64, a trusted workspace, and your own Codex login. The extension was tested with Codex CLI 0.153.4; compatibility with other CLI versions is not guaranteed. The interface is currently primarily Korean, with bilingual command names.
Install Node.js and npm if they are not already available. In a terminal, install the tested Codex CLI version:
npm install -g @openai/codex@0.153.4
Sign in with your own account and check the installation:
codex --version
codex login
codex login status
If PowerShell cannot find codex, restart VS Code after installation. If PowerShell blocks the npm script launcher, use codex.cmd for these commands. You do not need to change the system execution policy.
Install Codex Project Tabs. For a downloaded VSIX, use the Extensions view's … → Install from VSIX… command.
Click the Open New Codex Chat / 새 Codex 대화 열기 icon in the editor's top-right toolbar. It uses the active chat's project or the open file's workspace folder. You can also press Ctrl + Shift + P and run Codex Tabs: New Chat / 새 대화 to choose a project explicitly.
Send a message with Enter; use Shift + Enter for a new line. Repeat the New Chat command to open more independent conversations. Drag tabs into separate editor groups to see them side by side.
The Codex Project Tabs Explorer view and Codex Tabs: Open Saved Conversation / 대화 이어가기 command reopen saved conversations. The chat's 중단 button stops the current turn.
You can type and send another instruction while a response is streaming. It is delivered to the active turn without changing the model, project, or permissions. A pending approval still needs its own response. A message being handed to Codex briefly disables repeat submission, while typing and Stop stay available. Failed or uncertain submissions are restored as drafts rather than automatically resent.
The extension is free to use and has no developer-operated AI service. Codex uses your own configured account and services; your subscription allowances or API usage charges apply separately. See Codex authentication.
한국어 빠른 시작
프로젝트마다 Codex 대화를 독립적인 편집기 탭으로 열어 사용하는 Windows x64 확장입니다. 정식 릴리즈 채널로 배포하며, OpenAI 또는 Anthropic의 공식 확장은 아닙니다. 사용자 PC의 공식 Codex CLI를 사용합니다.
- Node.js와 npm을 준비하고
npm install -g @openai/codex@0.153.4로 검증한 CLI 버전을 설치합니다.
- 터미널에서
codex login으로 본인 계정에 로그인합니다. 설치 후 명령을 찾지 못하면 VS Code를 다시 실행하고, PowerShell 스크립트 차단 오류라면 codex.cmd login을 사용합니다.
- 확장을 설치하면 편집기 오른쪽 위에 새 Codex 대화 열기 버튼이 나타납니다. 현재 프로젝트에서 바로 대화를 열 수 있습니다. 프로젝트를 직접 선택하려면 Ctrl + Shift + P → Codex Tabs: New Chat / 새 대화를 실행합니다.
- 같은 명령을 반복하면 독립적인 새 탭이 열립니다. 탭을 옆으로 끌어 여러 편집기 그룹에 배치할 수 있습니다.
- Enter로 보내고 Shift + Enter로 줄을 바꿉니다. 저장된 대화는 탐색기의 Codex Project Tabs에서 다시 엽니다.
확장은 무료이지만 AI 사용량은 각 사용자의 Codex 구독 한도 또는 API 요금에 따라 처리됩니다. 개발자의 계정이나 공용 API 키를 사용하지 않습니다.
작업 중에도 추가 지시를 입력하고 Enter로 보낼 수 있습니다. 전송과 중단 버튼이 함께 표시됩니다. 추가 지시는 현재 작업으로 전달되며, 별도의 승인 요청을 자동으로 허용하지 않습니다. 전송이 실패하거나 전달 여부를 확인할 수 없으면 입력 내용을 초안으로 복원합니다.
탭만 닫으면 작업이 계속됩니다. 멈추려면 대화의 중단 버튼을 누르세요. VS Code 종료·다시 로드 시에는 확장의 Codex 프로세스도 종료됩니다. 저장된 대화는 복원하지만 중단된 작업을 자동으로 다시 보내지 않습니다.
같은 폴더를 선택한 대화들은 실제 파일을 공유합니다. Git worktree를 자동 생성하거나 동시 파일 수정을 격리하지 않습니다. 프로젝트 수정 모드는 모든 변경마다 승인을 묻는 기능이 아니며, Codex가 승인을 요청할 때 카드가 표시됩니다.
바이패스 · 전체 접근은 채팅 설정 또는 /permissions bypass로 선택합니다. 실행·파일 변경 승인과 Codex 샌드박스를 끄므로 프로젝트 밖의 파일과 네트워크에도 현재 PC 사용자 권한으로 접근할 수 있습니다. 선택한 대화에만 적용하고 재시작 후에도 유지합니다. 작업 내용에 관한 질문은 계속 나올 수 있으며, OS·관리자 제한을 우회하거나 관리자 권한을 얻지는 않습니다. 새 대화의 기본값은 프로젝트 수정입니다.
자체 원격 측정이나 개발자 서버 전송은 없습니다. 프로젝트 경로·대화 제목·스레드 ID·초안은 로컬에 남으며, 전체 대화 기록은 Codex가 별도로 관리합니다. Codex는 사용자 설정에 따라 프롬프트나 프로젝트 내용을 외부 제공자·도구에 보낼 수 있습니다. 오프라인 AI 도구는 아닙니다.
상세 한국어 안내는 확장에 포함된 README.ko.md에 있습니다.
Slash commands and ChatGPT Remote
Type / in the chat composer to see commands. Arrow keys select, Tab completes, Enter runs a complete command, and Escape closes suggestions. /help lists the commands supported by this extension. Unsupported commands return an error and are not sent as AI prompts.
| Command |
Action |
/new, /resume, /rename [name] |
Create, reopen, or rename an extension conversation |
/model [model], /permissions [read-only\|workspace-write\|bypass] |
Choose settings for the next request; danger-full-access is also accepted for bypass; finish or stop active work first |
/status |
Show the current project, model, permissions, and state; token/account limits are not included |
/compact |
Compact conversation context using Codex |
/review |
Start an inline review of uncommitted changes; requires the thread's applied permissions/model to match its current settings |
/diff |
Show tracked changes against HEAD within the project's folder; requires Git and an existing commit |
/remote [setup\|enable\|disable] |
Show instructions, register the local MCP connection, or turn this window's bridge on/off |
Remote is an experimental integration of ChatGPT host MCP tools and ChatGPT Remote. It controls the running extension through the PC's ChatGPT app; mobile pairing and the full phone-to-extension flow have not been validated.
- In an extension chat, run
/remote setup. It copies the bundled MCP adapter into local VS Code storage, registers the codex-project-tabs STDIO server with your Codex configuration, and enables this VS Code window. Node.js must be installed.
- Restart the PC ChatGPT app so it loads the new MCP connection.
- In the PC app, open Settings → Connections → Control this PC → Set up/Add, then pair your phone using the QR code. Use the same account and workspace. Availability depends on your account and rollout.
- On your phone, open ChatGPT → Remote → this PC and ask: “Show my Codex Project Tabs conversations.” Then identify a conversation and give it work. The host chat uses
list_sessions, get_session, send_message, interrupt, and new_chat.
The bridge starts disabled and must be re-enabled with /remote enable after restarting VS Code. /remote disable disconnects this window immediately; it does not cancel work already running. Only conversations loaded in enabled windows are exposed. Saved history is not automatically imported. Remote messages use the conversation's existing permissions, including bypass if selected locally, and active work accepts follow-ups. A remote-created chat inherits its source conversation's project, model, and permissions, including bypass. Remote cannot change permissions through slash commands. Approval requests or questions that appear must be answered in VS Code; Remote exposes no approval-answer endpoint or arbitrary project paths.
Keep VS Code and the PC ChatGPT app running. The extension operates no relay or hosting service: the bridge listens only on authenticated IPv4 loopback, and ChatGPT provides its own Remote connection. Model usage remains subject to your account. Returned paths, messages, and tool output become context in the controlling ChatGPT conversation. See PRIVACY.md for local connection metadata and data flow.
To remove the registration, run codex mcp remove codex-project-tabs in your terminal, or remove that MCP server in the PC ChatGPT app. Disabling the bridge alone keeps the registration available for later use.
Settings
| Setting |
Purpose |
codexProjectTabs.cliPath |
Optional absolute path to the local Codex executable or npm launcher. Empty enables automatic discovery. Windows codex.cmd launchers are supported. |
codexProjectTabs.model |
Model for new conversations. Empty uses the model from your Codex configuration. |
codexProjectTabs.defaultMode |
workspace-write (default), read-only, or danger-full-access for new conversations. Choosing full access here makes bypass the default for future local chats. |
The chat's settings menu also changes the current conversation's model and mode. Project-edit mode permits changes under the Codex sandbox policy; it does not ask before every edit. The extension displays approval requests when Codex requests them. Unsupported server requests are rejected.
Choose 바이패스 · 전체 접근 in the chat settings or send /permissions bypass (/permissions danger-full-access also works) to turn off execution/file-change approvals and the Codex sandbox. This permits commands, file access outside the selected project, and network access with the current PC user's rights. It does not grant administrator rights or override OS or organization restrictions. Task clarification questions can still appear. See Codex approvals and sandboxing.
Changing permissions keeps the selected model, affects only that conversation, and persists after reopening or restarting VS Code. Finish or stop active work first; changes apply to the next request. The mode label and inline description show the effect without an extra confirmation dialog. To return, choose 읽기 전용 or 프로젝트 수정, or send /permissions read-only or /permissions workspace-write. After changing modes, send a normal task before /review if Codex has not yet applied the new settings. Local new chats keep the configured default; Remote new chats inherit their source conversation's mode.
Troubleshooting
If CLI discovery fails, run Get-Command codex.cmd -ErrorAction SilentlyContinue or npm prefix -g to find the installed launcher. Set Codex Project Tabs: Cli Path in VS Code User Settings to the full path of the executable or npm launcher. This setting has machine scope.
For sign-in errors, run codex.cmd login and codex.cmd login status in a terminal, then reconnect or reopen the conversation. For connection errors, run Codex Tabs: Show Connection Log / 연결 로그 and check your CLI version. Protocol compatibility was validated against 0.153.4.
For public Marketplace feedback, use the listing's Q & A tab when available. Include extension, VS Code, Windows architecture, and CLI versions with minimal reproduction steps. Do not post credentials, private code, or unredacted logs and screenshots. No dedicated support website or private security-reporting channel is configured. Further troubleshooting is included in SUPPORT.md.
Known limitations
- Closing a tab leaves its task running. Reopen it from the Explorer or stop the turn before closing the tab.
- Quitting or reloading VS Code shuts down the extension's Codex processes. Saved conversations can be restored; interrupted work is not automatically resubmitted.
- Conversations have separate histories and project selections. Conversations targeting the same folder share its actual files. This extension does not create Git worktrees or isolate simultaneous file edits.
- Windows x64 is the release target. macOS, Linux, Windows ARM64, SSH, WSL, browser-based VS Code, and virtual workspaces have not been validated.
- Live Codex validation covered read-only tasks and history restoration. Approval handling and file-change rendering were tested with a mock server; live editing and long-running workloads have not yet been validated.
- File
@ completion, importing the official extension's existing chat list, and the official extension's complete settings interface are not included.
- The Codex app-server protocol can change. Protocol types for this release were generated from CLI 0.153.4.
Privacy
The extension contains no telemetry or analytics and does not send conversations to a developer-operated server. It communicates with your local Codex process over standard input and output.
It stores project paths, conversation titles, thread identifiers, model/mode choices, and update times in local VS Code extension storage. These records are not registered for Settings Sync. Drafts are retained in local webview state; drafts for questions marked secret are excluded from persisted question state. Codex manages persistent conversation history separately.
Titles can be derived from the first prompt. Paths, titles, drafts, and history may contain personal information. Closing a tab does not delete records. Uninstalling the extension should not be relied on to erase VS Code data, backups, or Codex's separately managed history. The extension has no dedicated history-deletion command.
Codex may send prompts, project content, and tool data to your configured providers and services, subject to their configuration and policies. The extension is not an offline AI tool. Authentication, service-side retention, and billing are controlled separately by Codex and those services.
The extension's connection output uses fixed lifecycle messages rather than logging protocol bodies, prompts, or credentials. Errors displayed in the interface and command output can still include sensitive content. Review shared logs and screenshots. Full details are included in PRIVACY.md.
Validation and development
Windows x64 validation includes 97 unit tests and 170 Chromium interface checks. An isolated VS Code 1.138.0 instance exercises editor tabs, toolbar and slash commands, concurrent fixture projects, attachment start/steering and restart, MCP instructions/interruption/new-chat creation, and history restoration with a mock server. Bypass coverage checks exact RPC permissions, steering, downgrade, review, Remote inheritance, and saved-mode restoration. A real read-only Codex CLI 0.153.4 turn identified a random code in image pixels and read a separately attached text file, then restored both attachments after reconnection. Earlier 0.1.0/0.1.1 live checks covered project isolation and active-turn text steering. Bypass, review/compact, and Remote flows use deterministic fixtures; no live full-access task or phone-paired account test was run for this release.
The declared minimum VS Code 1.95 was checked against its API type definitions; it was not separately run as a native test target. Detailed coverage and limitations are included in VALIDATION.md.
From a source checkout:
npm ci
npm run typecheck
npm test
npm run test:ui
npm run test:integration
npm run package
test:ui uses a local Chrome or Edge installation. test:integration uses an isolated VS Code profile and a mock Codex server; it can download an official VS Code archive. npm run test:live, npm run test:live:steer, and npm run test:live:attachments use a real Codex account and consume that account's usage allowance or paid API usage. Live tests create temporary fixture projects. The attachment smoke check uses a generated image and text file, and only one model turn.
Technical reference: Codex app-server, VS Code Webview API.
Licensed under MIT. Bundled third-party components retain their respective licenses.