cd /news/ai-tools/using-jetbrains-air-with-codex-and-a… · home › topics › ai-tools › article
[ARTICLE · art-155232] src=vladiliescu.net ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

Using JetBrains Air with Codex and Azure OpenAI

A developer configured JetBrains Air to run a separate "Codex Azure" agent through the Agent Client Protocol (ACP), letting the Codex CLI use OpenAI models deployed in Azure OpenAI without editing Codex's config.toml or restarting the app. The setup pins @agentclientprotocol/codex-acp at version 2.2.2 and installs it locally under ~/.local/share/codex-acp rather than running it via npx, to avoid pulling unpinned dependencies, and sets MODEL_PROVIDER to "azure" in Air's acp.json file stored under ~/Library/Application Support/JetBrains/Air. The author says the approach works and is "quite pleasant," while noting Air still needs access to the API key environment variable named in the env_key setting.

read3 min views4 publishedOct 22, 2026
Using JetBrains Air with Codex and Azure OpenAI
Image: source

So I’ve been switching between using the CLI<sup>1</sup> for coding and the Codex Mac app for everything else. I’m a Codex guy myself, but if you use Claude I will not judge, nor make any load bearing puns. For now.

Anyways, since the great unification of July 2026, I’ve found the Codex app to be a jumbled mess of threads and chats and projects and whatnot, to the point where I’m using chatgpt.com just to be able to focus on a thread. I am definitely not using it for coding, although it happily displays any and all threads I’ve started across a myriad of projects, making them…challenging to follow and understand.

Also, I like to switch to using OpenAI models deployed in Azure every now and then when tokens are low or when working on something private-er. And, to do this with Codex app you need to set a key in its config.toml, restart it, lose the “official openai” threads you had, get new “local” ones, etc. Annoying. In the CLI it’s just codex -c model_provider="azure" :/.

At the same time, I had access to JetBrains’ attempt at maintaining an edge in the dev tooling space, Air. Something lighter, more colorful, where copy/paste mostly works as God intended, where I can scroll back upwards on previous threads with no fear, something sane (as compared to the CLI).

Plus, it supports custom agents via ACP, sooooo I used this to set up a separate Codex Azure agent for my Azure deployments. And..it works. It’s quite pleasant. Some things are annoying<sup>2</sup>, but not enough to stop using it. Here’s how I did it.

Set up# #

This is all done using the Add custom agents feature by the way, so start off by choosing it right after choosing a New Task. It will open up an acp.json file that you can edit, stored under ~/Library/Application Support/JetBrains/Air.

Now, this all assumes you’ve gone ahead and added an azure configuration for Codex, as mentioned in my previous post. Note that Air will need access to the API key environment variable from your env_key setting.

The easy way (which I don’t recommend), is putting in something like:

{
  "agent_servers": {
    "Codex Custom": {
      "command": "npx",
      "args": [
        "-y",
        "@agentclientprotocol/codex-acp"
      ],
      "env": {
        "MODEL_PROVIDER": "azure"
      }
    }
  }
}

The reason I don’t like this, is that I’ve become very wary of supply chain security issues and try to avoid very hard getting the latest and greatest version of anything, until someone has the chance to look at it and make sure it’s not compromised. npx -y @agentclientprotocol/codex-acp will happily run the latest version so that’s a no no for me.

Now, one could do something like this of course, and pin the codex-acp version. But this will not guarantee immutable dependencies :/

{
  "agent_servers": {
    "Codex Azure": {
      "command": "npx",
      "args": [
        "--yes",
        "@agentclientprotocol/codex-acp@2.2.2"
      ],
      "env": {
        "MODEL_PROVIDER": "azure"
      }
    }
  }
}

So, just because I like to make things hard for myself, I saved the entire package on my disk, in a dedicated directory.

mkdir -p ~/.local/share/codex-acp
cd ~/.local/share/codex-acp

npm init -y
npm install --save-exact @agentclientprotocol/codex-acp@2.2.2

So now I run something like this.

{
  "agent_servers": {
    "Codex Azure": {
      "command": "/Users/<YOU>/.local/share/codex-acp/node_modules/.bin/codex-acp",
      "args": [],
      "env": {
        "MODEL_PROVIDER": "azure"
      }
    }
  }
}

And it works, I now have access to the Codex Azure set up right from the Air UI.

Notes# #

  • The default model and its reasoning effort are set via ~/.codex/config.toml . While you can change the model, I haven’t found a way to change the effort. I wasn’t even sure of what value Air was using for effort when using custom agents (the effort selector is missing for them at this time), but a quick look at the day’s sessions under~/.codex/sessions/ confirmed this.
model = "gpt-6-sol"
model_reasoning_effort = "xhigh"
  • Air will list supported models even if you haven’t deployed them in Azure. For any model you pick, its Azure deployment name needs to match the Codex model ID (for example, gpt-6-sol for “6 Sol”).
── more in #ai-tools 4 stories · sorted by recency
── more on @jetbrains air 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/using-jetbrains-air-…] indexed:0 read:3min 2026-10-22 · —