ChatCut plugin for ChatGPT install guide This plain text version is returned because this request does not look like a browser page navigation. Browser page: https://chatcut.io/chatgpt Full installation guide: This installs the ChatCut Codex plugin from the public marketplace repository: ```text https://github.com/ChatCut-Inc/agent-plugin.git ``` The example uses the `main` Git ref. ## Host environment gate First determine whether this conversation is running inside the ChatGPT/Codex web app or inside the ChatGPT/Codex desktop app on the user's local machine. If you are inside the web app or any isolated remote workspace, stop before running install commands. This web or isolated remote conversation cannot modify the desktop app's local plugin directory or bundled Codex configuration, so it cannot install or configure ChatCut for the desktop app. Tell the user to open ChatGPT/Codex desktop on the machine where they want to edit videos, start a new conversation there, and paste the install prompt that matches the user's conversation language. For any other language, use the English prompt. ```text English: Read chatcut.io/chatgpt to install the ChatCut plugin and set up a new task for me. Chinese: 阅读 chatcut.io/chatgpt ,帮我安装 ChatCut 插件并创建一个新任务。 ``` If you are inside the desktop app on the user's local machine, continue with this guide. If you are not sure, ask the user whether this conversation is in the web app or the desktop app before running any commands. The commands below intentionally call the Codex CLI bundled by the Codex desktop app directly. Before running anything, first locate that bundled desktop-app CLI and replace `""` with its full path for the current machine. Keep the quotes around the path, especially on Windows or when the path contains spaces. If you are a Codex agent reading this file for a user, find the bundled Codex CLI path for this Codex desktop-app installation before running the commands. Do not use a standalone Codex CLI from `npm`, Homebrew, another package manager, or a random `codex` found in `PATH`. ```text "" ``` ## Agent execution contract If you are a Codex agent reading this for a user, read this whole guide before running commands. Do not stop after install, login, verification, browser checks, or troubleshooting. Required order: 1. Complete **Host environment gate**. If you are in the web app or an isolated remote workspace, stop there and send the user to the desktop app with the install prompt. 2. Install, log in, and verify the ChatCut plugin. 3. If browser controls work, continue to **Required final step: open the user's first editing conversation**. 4. If browser controls fail on Windows, use **Windows Node REPL MCP fix**, then return to the required final step. 5. Setup is incomplete until you print one required self-report from the final step. ## Prerequisites Before installing, verify the bundled Codex CLI is available: ```text "" --version ``` This must be the Codex CLI bundled with the desktop app. If the command resolves to a standalone CLI, stop and locate the desktop app's bundled CLI instead. Node.js does not have to be visible in `PATH` before installing the plugin. If the `node_repl` MCP tool is not available during verification, missing Node.js visibility may be the cause. In that case, check whether Codex already bundles a Node.js environment that only needs to be added to `PATH` before installing Node.js separately. ## Install If you are a Codex agent reading this file for a user, install the ChatCut plugin for them. Do not only describe these commands; run them when the user has asked you to set up ChatCut. Add the Git marketplace at the `main` ref: ```text "" plugin marketplace add https://github.com/ChatCut-Inc/agent-plugin.git --ref main ``` If adding the marketplace fails with a Git availability error such as `program not found`, first verify Git is available in the terminal that will run the Codex command: ```text git --version ``` If Git is not available on `PATH`, troubleshoot Git availability for the current machine. Using the proper bundled Codex CLI does not automatically give that CLI Git access in the current shell. On Windows, Codex's bundled Git may exist here but not be on the terminal `PATH`: ```text %USERPROFILE%\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\git\cmd\git.exe ``` If that file exists and prints a version, temporarily prepend its directory to `PATH` for the install command, then rerun the marketplace add command. If you need a durable fix, add the Git binary directory to User or System `PATH`, open a new terminal so `PATH` updates are loaded, then rerun the marketplace add command. Do not assume the Codex desktop bundle includes a separate Git executable unless you have verified one for this installation. ONLY as a last resort, if no usable Git executable is available from `PATH` or the Codex runtime, install Git on the user's machine, open a new terminal, confirm `git --version`, and then rerun the marketplace add command. If marketplace add, or another network step fails with a timeout, connection reset, TLS error, DNS error, or proxy-related error, retry through the user's local HTTP/HTTPS proxy if one is running. Common local proxy ports include `7890`, `7897`, `1080`, `8080`, and `8888`. For example, try setting both `HTTPS_PROXY` and `HTTP_PROXY` to `http://127.0.0.1:7890`, then rerun the failed command. Use the proxy port that actually matches the user's network tool; do not leave a bad proxy configured after testing. List marketplaces and note the marketplace name Codex assigned: ```text "" plugin marketplace list ``` List plugins in that marketplace: ```text "" plugin list --marketplace ``` Install the ChatCut plugin: ```text "" plugin add chatcut@ ``` Do not open a new thread yet. Complete the login and verification steps below first. ## Log In After installing the plugin, authenticate the ChatCut MCP server: ```text "" mcp login chatcut ``` This command opens the ChatCut browser OAuth page automatically. Follow the browser sign-in flow. When the command completes successfully, ChatCut is logged in for future Codex sessions. If the OAuth page times out, the user cancels the flow, or the authorization callback fails, rerun the same command and complete the newly opened browser sign-in flow. Do not give up after the first failed attempt or move to recovery while the failure still appears transient. Keep retrying until authorization succeeds, the user asks you to stop, or the same failure continues without any progress and cannot be resolved in the current conversation. Run only one login attempt at a time, and verify the actual authorization status before continuing: ```text "" mcp login chatcut ``` ## Verify Check the installed plugin status: ```text "" plugin list --marketplace --json ``` The ChatCut row should show `chatcut@` with status `installed, enabled`. Also verify that Codex can still read the marketplace configuration: ```text "" plugin marketplace list --json ``` Verify the ChatCut MCP server is registered: ```text "" mcp get chatcut --json ``` Verify the Node REPL MCP server is registered and enabled: ```text "" mcp list --json "" mcp get node_repl --json ``` The MCP list should show `node_repl` as enabled. If the agent can read the skill and discover browser controls, continue to **Required final step: open the user's first editing conversation**. If it cannot discover browser controls and the machine is Windows, use the Windows Node REPL MCP fix below, then return to the required final step. ### Windows Node REPL MCP fix Use this only when browser-control discovery fails on Windows. In that case, the Codex in-app Browser MCP can be installed while `mcp__node_repl__js` is still not exposed. This usually means the `node_repl` MCP server is registered, but `node_repl.exe` cannot start. First, find the Codex config and Node REPL runtime: ```powershell $codexHome = "$env:USERPROFILE\.codex" $config = Join-Path $codexHome "config.toml" Get-Content $config ``` Look for a block like this: ```toml [mcp_servers.node_repl] command = 'C:\Users\\AppData\Local\OpenAI\Codex\runtimes\cua_node\\bin\node_repl.exe' [mcp_servers.node_repl.env] NODE_REPL_NODE_PATH = '...\bin\node.exe' NODE_REPL_NODE_MODULE_DIRS = '...\bin\node_modules' ``` Validate whether `node_repl.exe` starts. Replace the path with the one from your config: ```powershell & "C:\Users\\AppData\Local\OpenAI\Codex\runtimes\cua_node\\bin\node_repl.exe" --help Write-Output "LASTEXITCODE=$LASTEXITCODE" ``` If it prints help and `LASTEXITCODE=0`, the binary is fine. If it exits with `-1073741515`, Windows cannot find a required DLL, commonly VC runtime DLLs. Locate the bundled VC runtime DLL directory: ```powershell Get-ChildItem "$env:USERPROFILE\.cache\codex-runtimes\codex-primary-runtime\dependencies\python" ` -File -Include "vcruntime140.dll","vcruntime140_1.dll","msvcp140.dll" | Select-Object FullName ``` The useful directory is usually: ```text C:\Users\\.cache\codex-runtimes\codex-primary-runtime\dependencies\python ``` Add that directory to your durable User `PATH`: ```powershell $dir = "$env:USERPROFILE\.cache\codex-runtimes\codex-primary-runtime\dependencies\python" $userPath = [Environment]::GetEnvironmentVariable('Path', 'User') if (($userPath -split ';') -notcontains $dir) { $newPath = if ([string]::IsNullOrWhiteSpace($userPath)) { $dir } else { "$userPath;$dir" } [Environment]::SetEnvironmentVariable('Path', $newPath, 'User') } [Environment]::GetEnvironmentVariable('Path', 'User') -split ';' | Where-Object { $_ -eq $dir } ``` After changing User `PATH`, fully quit and reopen Codex before trying browser-control discovery again. Do not keep testing in the installation thread: that thread has already captured its MCP tool list and the Browser MCP will not be exposed there even if the fix worked. A new PowerShell session should show the durable path entry: ```powershell $env:Path -split ';' | Where-Object { $_ -like '*codex-primary-runtime*dependencies*python*' } ``` After reopening Codex, start a new thread. The `node_repl` MCP process should inherit the updated `PATH` and find `vcruntime140.dll` / `vcruntime140_1.dll`. Then ask the Codex agent to read `browser:control-in-app-browser` again and rediscover the browser controls. Important: adding the directory inside one shell with `$env:PATH = ...` only affects that shell. Use durable User or System `PATH`, then fully quit and reopen Codex so browser-control discovery can see the updated environment. You can then validate that `node_repl.exe` starts. Replace the path with the one from your config: ```powershell & "C:\Users\\AppData\Local\OpenAI\Codex\runtimes\cua_node\\bin\node_repl.exe" --help Write-Output "LASTEXITCODE=$LASTEXITCODE" ``` Expected success: ```text Run the node_repl MCP stdio server. ... LASTEXITCODE=0 ``` Do not rely on this deprecated flag: ```toml [features] js_repl = true ``` If you added it, remove it. If you changed User or System `PATH`, fully quit and reopen Codex before trying to discover browser controls again. The tool list is captured when the thread starts, so the installation thread will not gain the Browser MCP or `mcp__node_repl__js` after the fix. After reopening Codex, start a new thread and ask Codex to read `browser:control-in-app-browser` again, search for `node_repl js`, or use the internal browser again. Once `mcp__node_repl__js` is exposed, the Browser skill bootstrap should work: ```js const { setupBrowserRuntime } = await import("C:/Users//.codex/plugins/cache/openai-bundled/browser//scripts/browser-client.mjs"); await setupBrowserRuntime({ globals: globalThis }); globalThis.browser = await agent.browsers.get("iab"); nodeRepl.write(await browser.documentation()); ``` Then the in-app Browser can be made visible with: ```js await (await browser.capabilities.get("visibility")).set(true); ``` The root cause in this case is not ChatCut and not the Browser plugin. It is `node_repl.exe` failing to start because the VC runtime DLL directories are missing from the MCP server environment. If you changed Node.js visibility or `PATH`, fully quit and reopen Codex after completing this verification. If the MCP server is not found, open a new Codex thread and rerun the plugin verification commands. If you changed User or System `PATH`, fully quit and reopen Codex first. If the MCP server is found but you are not logged in, rerun: ```text "" mcp login chatcut ``` If the plugin does not appear, rerun the marketplace list command to confirm the marketplace name, then rerun the plugin list command with that exact name. ## Required final step: open the user's next conversation REQUIRED: you must create and open the user's next ChatCut conversation yourself — do not just describe how, and do not ask the user whether to proceed. You are not finished until you do. First determine `handoffMode` from verified setup results: - Use `editing` only when the plugin is installed, `"" mcp login chatcut` succeeded, `node_repl` is enabled, and every required verification above passed. - Use `recovery` if installation, login, or verification failed, remains incomplete, or cannot be confirmed. Do not use the editing prompt, claim ChatCut is installed, or imply that the new conversation can edit with ChatCut yet. If you changed Node.js visibility or `PATH` during setup, fully quit and reopen Codex or the agent app before creating the next conversation. Resolve `startupPromptLanguage` from the user's actual conversation language, not the operating system language. Do not ask the user to choose. Generate `handoffPrompt` in `startupPromptLanguage` from the matching mode below; for any other `startupPromptLanguage`, translate the English prompt. ### Editing prompt The current installation conversation CANNOT reach the newly installed MCP tools, even after login succeeds. Do not attempt ChatCut tool calls here — they WILL fail. A brand-new conversation is mandatory. ```text Chinese: ChatCut 插件已经安装好了,请你用内置浏览器打开一个 ChatCut 项目,把项目名称命名为“我的第一个ChatCut视频”,然后先告诉我你整体可以做什么,尤其是这三部分:视频剪辑(语音清理、字幕、转场、补充素材等)、MG 动画制作、素材生成(视频、旁白、音乐、音效等)。之后问我有什么素材、想做什么样的视频,告诉我你可以根据我的具体需求一步步开始制作,并且我也可以随时进入 ChatCut 编辑界面自己调整时间线、字幕、MG 动画等任何内容,就像使用传统编辑器一样。 English: The ChatCut plugin is already installed. Please use the built-in browser to open a ChatCut project, name the project "My First ChatCut Video", then first tell me an overall view of what you can do, especially these three parts —— video editing(speech cleanup, caption, transition, b-roll, etc), motion graphics creation, assets generation(video, voiceover, music, sound effects, etc). After that, ask me what materials I have and what kind of video I want to make. Tell me you can start making it step by step based on my specific needs and I can also hop into the ChatCut editing interface anytime and adjust things by myself, timeline, captions, motion graphics, anything, just like a traditional editor. Spanish: El plugin de ChatCut ya está instalado. Usa el navegador integrado para abrir un proyecto de ChatCut, nombra el proyecto "Mi primer video de ChatCut" y luego primero dame una visión general de lo que puedes hacer, especialmente estas tres partes: edición de video (limpieza de voz, subtítulos, transiciones, b-roll, etc.), creación de motion graphics y generación de recursos (video, voz en off, música, efectos de sonido, etc.). Después pregúntame qué materiales tengo y qué tipo de video quiero crear. Dime que puedes empezar a crearlo paso a paso según mis necesidades concretas y que también puedo entrar en la interfaz de edición de ChatCut en cualquier momento para ajustar cosas por mi cuenta, como la línea de tiempo, los subtítulos, los motion graphics o cualquier otro elemento, igual que en un editor tradicional. ``` ### Recovery prompt Replace `` with the exact failed or incomplete step and the most useful error or verification result from this installation conversation. Do not omit it or replace it with a generic statement. The recovery conversation must retry setup before doing any editing. If it completes installation or login, it must then create a separate editing conversation because tools installed during the recovery conversation will not load into that same conversation. ```text Chinese: ChatCut 插件还没有完成安装或授权。请阅读 https://chatcut.io/chatgpt ,并从下面这个失败或未完成的步骤继续重试: 不要假设插件已经安装或授权成功;请重新检查并完成插件安装、登录授权和全部验证。全部成功后,再为我创建并打开一个新的 ChatCut 编辑任务。 English: The ChatCut plugin installation or authorization is not complete. Read https://chatcut.io/chatgpt and continue retrying from the failed or incomplete step below: Do not assume the plugin is installed or authorized; recheck and complete plugin installation, login authorization, and all verification. After everything succeeds, create and open a separate new ChatCut editing task for me. Spanish: La instalación o autorización del plugin de ChatCut no está completa. Lee https://chatcut.io/chatgpt y continúa reintentando desde el paso fallido o incompleto que aparece a continuación: No supongas que el plugin está instalado o autorizado; vuelve a comprobar y completa la instalación, la autorización de inicio de sesión y todas las verificaciones. Cuando todo se complete correctamente, crea y abre para mí una nueva tarea de edición de ChatCut por separado. ``` ### Codex hosts — do these IN ORDER. Do not skip ahead to the fallback. 1. DISCOVER (mandatory, not conditional). Call `tool_search` for `create_thread`, `send_message_to_thread`, `navigate_to_codex_page`, `set_thread_title`, `list_projects`, and any current-project/current-workspace lookup tool — even if none appear in your initial tool list; they are dynamic and discovery is how they become callable. Only if `tool_search` itself does not exist may you scan already-visible tools for equivalent create/send/switch/project-context tools. 2. TARGET CONTEXT. Preserve the installation conversation's Codex container. If this installation conversation belongs to a Codex project/workspace, create the new conversation in that same project/workspace target; use `list_projects` or the host's current-project/current-workspace metadata to resolve the matching `projectId`/target. Do not omit the target or create a projectless conversation when the installation conversation is project-scoped. If this installation conversation is projectless, create a projectless conversation. Only fall back if the host provides no way to preserve or determine the current project/workspace target; in that case, say that project context could not be preserved. 3. CREATE. If `create_thread` accepts an initial user message, call it once with the target from step 2 and the resolved `handoffPrompt` as that message. If it does not, create the thread with the target from step 2, then IMMEDIATELY call `send_message_to_thread` with `handoffPrompt` targeting the new thread id. Invariant: this step is not done until the new thread CONTAINS `handoffPrompt`. A created-but-empty thread is a failure, not a success. 4. SWITCH. If `navigate_to_codex_page` (or an equivalent switch/open tool) is available, you MUST call it to move the user into the new thread. 5. TITLE (optional). If `set_thread_title` is available, use the project name for `editing` mode or a localized equivalent of "Finish ChatCut Setup" for `recovery` mode. Skipping the title is fine; skipping the message in step 3 is not. 6. FALLBACK — last resort only. Hand the user `handoffPrompt` to paste ONLY if: (i) `tool_search` is unavailable AND no equivalent create tool is visible, (ii) `tool_search` returned no match for any create-conversation tool, (iii) the host cannot preserve or determine the current project/workspace target, or (iv) a required call actually returned an error. "I assumed this host does not support it" is NOT a valid reason. When you fall back, name the exact discovery query that found nothing, the exact missing project-context capability, or the exact tool call and error. ### Required self-report (before ending your turn, print exactly one) - (A) "Started a new editing conversation and sent your first prompt" — use only for `editing` mode. Include the new thread's title or id. In the user's language, explain that this current conversation is only the installation conversation and the user should continue editing in the new conversation. Report (A) only if you actually called the create/send tools and the thread contains the editing prompt. - (R) "Setup is not complete; started a recovery conversation" — use only for `recovery` mode. Include the new thread's title or id, the exact failed or incomplete setup step, and explicitly tell the user that ChatCut is not ready yet and the new conversation will retry installation or authorization. Report (R) only if you actually called the create/send tools and the thread contains the recovery prompt. - (B) "Could not auto-start the conversation" — state whether setup is complete, give the matching paste-in `handoffPrompt`, and state which step (1, 2, 3, or 4) was unavailable or failed. ### Completion gate Do not tell the user ChatCut is installed or setup is complete unless `handoffMode` is `editing`. Creating a recovery conversation does not make installation successful. The handoff is done only when the matching `handoffPrompt` is present in the new conversation (report A or R), or you handed the user that exact prompt with the failed discovery or tool step (report B). Correct for Codex hosts: resolve setup outcome and the current project/workspace target, call `create_thread` with that target and the matching `handoffPrompt` as the initial message, then `navigate_to_codex_page` to switch the user in, then report (A) or (R) with the thread id. Incorrect for Codex hosts: send the editing prompt after failed installation or incomplete authorization; claim setup succeeded because a recovery conversation was created; print `handoffPrompt` in THIS conversation and stop; or say "just open a new chat" without attempting any create/send/switch call. ## Update To refresh the marketplace snapshot later, upgrade all marketplaces or optionally name one marketplace explicitly: ```text "" plugin marketplace upgrade "" plugin marketplace upgrade ``` Then rerun the verification commands above.