macOS: Copy deeplink fails with false 'ChatGPT is focused' clipboard error
App version
ChatGPT desktop 26.803.41515 (build 6321), which is the current appcast release as of 2026-08-07.
Environment
- macOS 26.5.2 (25F84)
- Apple Silicon (
arm64)
Description
On macOS, Copy deeplink from a chat's sidebar context menu consistently fails even while ChatGPT is the frontmost/focused app.
The app shows:
Couldn't copy to clipboard The content wasn't copied. Try again while ChatGPT is focused.
The macOS clipboard itself works normally, and ChatGPT is correctly registered for the codex:// URL scheme. The documented canonical link is codex://threads/<thread-id>.
Steps to reproduce
- Open ChatGPT desktop on macOS.
- Select a local chat so the ChatGPT window is active and frontmost.
- Right-click the chat in the sidebar.
- Select Copy deeplink.
Actual result
The focus-related error toast appears and the deeplink is not copied.
Expected result
The clipboard contains codex://threads/<thread-id>.
Root-cause evidence
Inspection of the production renderer bundle shows that this command builds codex://threads/${threadId} and sends it to a helper that calls navigator.clipboard.writeText(...). Any exception is swallowed and mapped to the generic focus-related toast.
The Electron main process already registers a native clipboard service that uses Electron's clipboard.writeText(...) and exposes it with the other runtime services. This suggests that opening/using the sidebar context menu causes the renderer Clipboard API call to lose the required focus or transient activation, while the error message incorrectly implies that the whole app is unfocused.
Suggested fix
Route plain-text copies through the existing native Electron clipboard service, or use it as a fallback when navigator.clipboard.writeText(...) rejects. The web Clipboard API can remain in place where multi-MIME ClipboardItem support is needed.
Workarounds
- Invoke Copy deeplink with the keyboard/command menu while the chat is open, avoiding the sidebar context-menu path.
- Copy the session ID and manually construct
codex://threads/<session-id>.
Official deep-link reference: https://learn.chatgpt.com/docs/reference/commands#deep-links
Screenshots showing the context-menu action and the resulting toast are available if needed; they are not attached because they contain private chat titles.