Skip to content

Add AI CLI in Raycast extension - #32986

Open
bbfss wants to merge 6 commits into
raycast:mainfrom
bbfss:ext/ask-codex-raycast
Open

bbfss wants to merge 6 commits into
raycast:mainfrom
bbfss:ext/ask-codex-raycast

Conversation

@bbfss

@bbfss bbfss commented Oct 31, 2026

Copy link
Copy Markdown

Description

AI CLI in Raycast adds native Raycast chats for locally installed AI CLIs — Codex, Antigravity (agy), Qoder, Qoder CN, WorkBuddy and Gemini — each as an independent command with its own conversations, drafts, model choice, and setup record.

  • AI CLI in Raycast command is a searchable launcher that detects installed CLIs (PATH plus known locations, manual paths take priority) and opens the CLI Settings view in place. Each CLI has its own command that opens it directly and restores its last conversation.
  • Chats render a full-width Markdown Detail (code blocks, lists, formulas) with a native input popover. Replies stream in; running replies can be stopped before switching CLI. Drafts survive closing and reopening the input.
  • The Model and Effort menus read each CLI's real catalog. Raycast Settings offers a per-CLI default strategy: "Use Last Selection" or a fixed model + effort pair validated against the current catalog before saving.
  • The interface language follows the system (including Raycast's macOS application language) with manual English, 简体中文, and 繁體中文 options; root-search subtitles are refreshed at runtime through updateCommandMetadata.
  • The extension uses each CLI's existing local authentication only. It downloads no runtimes, requires no API keys, and stores no credentials. Available for macOS and Windows.
  • launchCommand calls are wrapped in try-catch, launchers use isLoading, and the extension passes npm run build, tsc --noEmit, ray lint, and 302 automated tests (300 pass / 2 Windows-specific skips).

Screencast

AI CLI in Raycast chat view

Checklist

@raycastbot

Copy link
Copy Markdown
Collaborator

Congratulations on your new Raycast extension! 🚀

We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 15 business days.

Once the PR is approved and merged, the extension will be available on our Store.

@greptile-apps

greptile-apps Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 4/5

[Medium impact] The PR’s effects stay within the new AI CLI in Raycast extension.

Preserve access to saved Codex chats and satisfy the outstanding localization requirement before merging.

Findings

  1. P1 Saved Codex chats disappear ▶
  2. P2 Custom localization violates repository rules ▶
Fix with agent prompt
### Issue 1
extensions/ai-cli-in-raycast/src/session-storage.ts:94
Changing the library key to `ai-cli-in-raycast.conversations.v2` hides chats and drafts saved under `ask-codex.conversations.v2`. The previous build already used the same extension ID, so this affects updates within the current extension, not just the earlier rename. `initialize()` reads only the new key, and `parseLibrary()` treats a missing value as empty history.

Keep the existing key or migrate both older formats before creating an empty library.

### Issue 2
extensions/ai-cli-in-raycast/src/i18n.ts:18-25
`systemLanguage()`, `setLanguage()`, and the translation table add custom localization, including reads of macOS language settings. Repository instructions prohibit custom localization in Raycast extensions and require the preferences API for locale-dependent behavior. Remove the custom translation layer and language probing before merging to satisfy that requirement.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

Adds native Raycast chats for six locally installed AI CLIs.

  • Raycast chats stream replies and keep each CLI’s conversations separate.
  • Raycast sends each provider’s chat to its installed CLI.
  • The launcher finds installed CLIs and guides users through setup.
  • Each CLI can reuse its last model or keep a fixed default.
  • The interface follows system language or a chosen Chinese variant.
  • The extension package includes the AI CLI suite’s store and build files.

Reviews (6) · Last reviewed commit: "Replace ask-codex storage keys and drop ..." · Reviewed by Greptile

Comment on lines +18 to +25
function systemLanguage(): UILanguage {
if (platform() === "darwin") {
if (macSystemLanguage) return macSystemLanguage;
for (const domain of ["com.raycast.macos", "-g"]) {
try {
const languages = execFileSync(
"/usr/bin/defaults",
["read", domain, "AppleLanguages"],

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Custom localization violates repository rules

systemLanguage(), setLanguage(), and the translation table add custom localization, including reads of macOS language settings. Repository instructions prohibit custom localization in Raycast extensions and require the preferences API for locale-dependent behavior. Remove the custom translation layer and language probing before merging to satisfy that requirement.

Rule Used: What: Do not implement custom localization logic in Raycast extensions; use the preferences API for locale-dependent functionality. Why: Raycast only supports US English, and custom localization creates unnecessary complexity and inconsistency acros... (source)

Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/ask-codex-raycast/src/i18n.ts
Line: 18-25

Comment:
**Custom localization violates repository rules**

`systemLanguage()`, `setLanguage()`, and the translation table add custom localization, including reads of macOS language settings. Repository instructions prohibit custom localization in Raycast extensions and require the preferences API for locale-dependent behavior. Remove the custom translation layer and language probing before merging to satisfy that requirement.

**Rule Used:** What: Do not implement custom localization logic in Raycast extensions; use the preferences API for locale-dependent functionality.  Why: Raycast only supports US English, and custom localization creates unnecessary complexity and inconsistency acros... ([source](https://app.greptile.com/-/switch-tenant?tenant=raycast&next=%2Fcustom-context%3Fmemory%3D78677f74-64f7-483b-b90d-9c33e2e049da))

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

export function storageKeys(provider: ProviderId) {
if (provider === "codex")
return {
library: "ai-cli-in-raycast.conversations.v2",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Saved Codex chats disappear

Changing the library key to ai-cli-in-raycast.conversations.v2 hides chats and drafts saved under ask-codex.conversations.v2. The previous build already used the same extension ID, so this affects updates within the current extension, not just the earlier rename. initialize() reads only the new key, and parseLibrary() treats a missing value as empty history.

Keep the existing key or migrate both older formats before creating an empty library.

Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/ai-cli-in-raycast/src/session-storage.ts
Line: 94

Comment:
**Saved Codex chats disappear**

Changing the library key to `ai-cli-in-raycast.conversations.v2` hides chats and drafts saved under `ask-codex.conversations.v2`. The previous build already used the same extension ID, so this affects updates within the current extension, not just the earlier rename. `initialize()` reads only the new key, and `parseLibrary()` treats a missing value as empty history.

Keep the existing key or migrate both older formats before creating an empty library.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants