Repository navigation
Onyx Code 2.7.0
Codebase search now reaches C, C++, Java and a dozen more languages, along with your configuration files and documents. Air-Gap and your privacy rules hold in more places, chat asks before more of what could change your computer, and your work is safer around Keep and closing. Settings do what they say, and Cmd+Z undoes what chat puts in its input.
Downloading
If you're installing manually:
macOS
- Apple Silicon Mac (M1 or newer): download
OnyxCode-darwin-arm64.dmg(smaller, native). - Intel Mac, or unsure: download
OnyxCode-darwin-universal.dmg(runs on both).
Open the .dmg and drag Onyx Code to /Applications/. Both macOS downloads are signed and notarized by Apple, so they pass Gatekeeper and open without security warnings.
Linux (x64)
- Debian / Ubuntu: download
OnyxCode-linux-x64.deband install it withsudo apt install ./OnyxCode-linux-x64.deb. - Other distributions: download
OnyxCode-linux-x64.AppImage, make it executable (chmod +x), and run it. On Ubuntu 24.04 (which lacks libfuse2) run it with--appimage-extract-and-run.
Windows (x64)
Install with winget: winget install OnyxCode (recommended). It runs through Microsoft's App Installer (a trusted Microsoft Store app) with a package listing reviewed in Microsoft's community winget repository, so it verifies the download and gives a smoother first-run experience. The same installer (OnyxCode-win32-x64-winget.exe) is also attached here for manual download; note it is not code-signed yet either way, so Windows may still show an "Unknown publisher" warning. A code-signed installer is planned for a later release.
The *-autoupdate.zip, darwin-*.json, linux-x64.json and win32-x64.json files are plumbing for Onyx Code's
built-in auto-updater. They are not designed for manual install and will give
you a worse first-run experience than the download above.
What's New
The code index reaches C, C++, Java and more. Functions, classes, methods, macros and constants in C, C++, Java, C#, Kotlin, Swift, Ruby, PHP, Scala, Lua and shell scripts can now be found, so chat can point at the function you asked about in those projects.
Your configuration and documents can be found. A tsconfig.json, a CI workflow, a docker-compose.yml, a SQL schema or a README section now answers a question about it. The secrets the index recognizes in such a file, such as a password or a token under its usual name, are masked in its copy, and the files that configure MCP servers stay out of the index; .onyxnoai keeps a file from AI altogether.
Search leads with what answers the question. Search ranks the symbols your question is about first. Long classes and functions are indexed whole, with the comment above each declaration, and on Windows a file you save reaches the index right away.
Air-Gap keeps the built-in JSON, npm and TypeScript support offline. While Air-Gap is on, JSON files such as package.json open without fetching a schema, dependencies stay off the npm registry, and TypeScript downloads no type packages, whatever their own settings say. Your settings apply again when you turn Air-Gap off.
Air-Gap lets through only the server you use. An External Server's host is let through under Air-Gap only while a model on it is active or Connect to External Server is on, and the Air-Gap pill names it only then.
The code index keeps to what you told it to leave out. Files your .gitignore or onyxcode.index.excludeGlobs names stay out of the index and out of what chat retrieves, including when they are saved. Files in a dot folder such as .github stay up to date.
Your protected files stay out of the search. /search lists nothing from a file .onyxnoai or a Read(...) deny protects, even in an index built before the rule, and chat's search looks past a protected file to find what else matches.
The code index leaves Onyx's own folders out. With your home folder open, the index skips Onyx's own folders, so your settings and mcp.json stay out of chat's search, and chat withholds Onyx's own session transcripts and code index, as it does your license.
Chat asks before more of what could change your computer. Chat refuses an rsync that would empty your home or project folder, as it refuses rm -r. An always-allowed MCP tool asks before a glob such as ~/.*rc reaches a start-up file, and Python's start-up files and git's hooks in .husky (with husky's own .huskyrc) are held for your review. Run in Worktree refuses an .onyx-agents that is a symbolic link. On Windows, chat's file tools refuse a name Windows reserves (NUL, CON, COM1, or one ending in a dot) and read a path led by a backslash as outside your project.
The app stays up whatever a server sends. Browse Models' lists, an External Server's detection, update checks and license answers stop reading at 64 MB and say so, so an oversized compressed response is turned away safely.
A redacted prompt goes straight through. The secret check recognizes its own redaction marker, so a value already hidden is not flagged again.
Keep waits for your unsaved edits. For a file open with unsaved edits, Keep, Revert and Apply ask you to save or revert first, and the change stays waiting, so both your text and the change are kept.
Closing during a reply asks first. When you close, quit or reload while a reply is still running, you are asked first, and any change it proposed by the time it stops is named in the Keep or Discard question.
A chat with a worktree reads your files as that worktree holds them. Open tabs and attached project files go to the model as the worktree holds them, so it works from the session's own text, and code from the index for a file the worktree changed is left out.
A reply says what really happened. A reply that only echoes what a tool returned is not shown as the answer, and one that repeats Onyx's own words about a failed write gets the same warning as any such claim. A file the turn ran out of room for shows as "Not run" above the reply.
Smoother Keep and Review. A change that arrives while a Keep is writing its file can be kept, a review stays open when another change is staged on it, and a model that wrote a new file can rewrite it in the same turn. A model that opens its code block on the path's line keeps the file's contents, and edits keep a Windows-style file's line endings intact.
Chat History opens whatever it holds. A saved chat this version cannot read, after going back to an earlier version, is skipped, and the others open, with your last chat coming back at start.
Model downloads check what arrived. A download that finishes with something other than a model file, such as a block page from a proxy, is removed, and the download fails saying what it received.
Codebase search returns each block once, including after an index run that ended in an error or was cancelled.
Larger models keep their place between tool calls. On a slower model, the next request waits a moment for the conversation's slot, no more than three seconds, so the prompt is not read again.
Switching indexing off takes effect at once. The index leaves memory immediately and chat stops retrieving from it; switching it back on starts a run.
Long code blocks are indexed whole from the first run. A new bundled embedding model, or a model file replaced at its path, is noticed too, and the index is built again so search stays right.
Embedding models you bring are set up right. Activating a model you imported or found by search sets the pooling mode its file names, and a model in a folder of its repository downloads.
onyxcode.ai.fimTemplate works. A format you name is the one autocomplete sends, for a renamed file or a fine-tune whose name matches none.
A larger window reaches Ollama. A size you choose in the context window picker is the most Onyx asks Ollama for, beyond 32,768 too. Auto stays as it was.
/diff shows the diff as it is now, and what it left out. It shows the current diff, says how many files it left out because the AI may not read them, and gives its size in real bytes.
Chat's steps and notices say what happened. A read your privacy rules withhold says "Not read: .env (kept from AI)" and why. A file found from a bare name reads as found, a found file is named as the project names it, and a path through a link to another computer is named as such. A file chat itself changed is not announced as changed on disk at the next send, and a full chat with nothing left to summarize is told what to do.
A start your system refuses says so. Where the system refuses to run the AI engine, as a security product can, the notice says so. On the CPU, a scan of a new engine's first run is waited out too.
The first start after an update settles itself. Onyx gives the AI engine longer to report your GPU's memory the first time it runs, which a security product scanning a new engine can slow down. If the answer takes longer still, the AI server starts again by itself once it comes, unless it has already answered you, so you have the prompt cache and the context window your computer can hold with nothing to restart. A message sent during the wait is told the model is still loading.
Cmd+Z undoes what chat puts in its input. Dropping a file or picking from the / or @ list keeps the box's undo history, so you can take the insert back, and what you typed before it (Ctrl+Z on Windows and Linux).
The Proposed Changes panel is laid out. Each change takes one line, with its buttons the width of their words, and the panel scrolls to every change.
Long server ids stay readable in /mcp. The name keeps its width, and an id as long as an agent plugin's is shortened in the middle, with the whole of it on hover.
Sends stay quick with a long pasted log. A request naming files, with a log naming many paths pasted in, goes to the model without delay.
Onyx Tab keeps more of its next edits, including when the model's answer marks where the cursor belongs after the edit.
Browse Models agrees with what Onyx offers you. A file no larger than a chat model Onyx offers on your computer reads "Tight fit" at worst, as long as it fits the memory a model can use there, and its tooltip says what to expect.
After you update. Your project's codebase index is built again once, to take in the new languages, configuration files and documents. It runs in the background and takes a few minutes on a large project.
System Requirements
- macOS 11 (Big Sur) or later.
- Apple Silicon (M1 or newer) or an Intel Mac. The Universal download runs natively on both.
Installing
- Download the
.dmgthat matches your Mac (see "Downloading" above). - Open it and drag Onyx Code into your Applications folder.
- Launch it from Applications. Because the build is notarized, it opens without a security prompt.
Verification
This build is signed and notarized by Apple. macOS verifies it on first launch, so it opens as an app from an identified developer without security warnings.