⚠ First: there are two apps
OpenAI installs two apps together: ChatGPT and ChatGPT classic. The names are similar but they attach to AiAkiv in different ways. What works in one doesn't work in the other.
What older material called Codex is today's ChatGPT. That's also why the config file is
.codex/config.toml.
At a glance
| OAuth (account connector) | API key (.codex/config.toml) |
|
|---|---|---|
| ChatGPT classic · web | ✅ Register once on the web | - |
| ChatGPT | ❌ Not available | ✅ Put a key in the working folder |
- Register the account connector once and it's visible on the web and in both apps.
- The two setups can sit side by side. But you must register them under different names → §4
- Even so, using only one is recommended → §5
Where saving goes differs too. The account connector follows Main from the console; a folder's key is pinned to that project (Teams and projects).
1. ChatGPT classic: attaches via an OAuth connector
Registration happens once, on the web. You cannot create a connector from the app.
-
Go to
chatgpt.comin a browser, not the app. -
Bottom-left user → Settings → Security and login → Developer mode, turn it on.
-
Settings → Apps (connectors) → Create app and enter the address below. (Plus and up.)
https://mcp.aiakiv.com/mcp -
Turn it on per conversation. Connectors are enabled per conversation. Press + in a new chat's composer and pick AiAkiv. Skip this and no tools appear in a new chat at all.
Developer mode is an OpenAI setting. You turn it on to add a custom connector by hand. Once AiAkiv can be installed straight from OpenAI's plugin directory there is no connector to add by hand, so this step goes away too. If this procedure is a burden, use §2's key method instead. Though that only makes sense if you're on the ChatGPT app.
Saving goes to Main. An account connector has no mechanism to pin a project, so it lands in the Main project set in the console. The check-target tool shows
bindingas"main". To use different projects per folder, go to §2.
2. ChatGPT: no OAuth, attach with an API key
OAuth is not usable here. Neither a custom connector nor a config with the
X-K2G-Project header attaches. The one setup that works is a project-pinned API key.
With a key, the authentication step disappears entirely. Authentication is already inside the key, so there's no sign-in window and no browser (Authentication).
-
Issue that project's API key in the console (shown once, right after issuing). Use a project key here. A dynamic key attaches too, but its save location moves with Main, which defeats the point of pinning to a folder and makes it harder to tell where something was saved when you run both setups per §4. Use dynamic keys elsewhere (Authentication).
-
Put the following in the working folder's
.codex/config.toml. The file location is the same for the app, the CLI, and the IDE extension.[mcp_servers.AiAkiv-proj] url = "https://mcp.aiakiv.com/mcp" http_headers = { "Authorization" = "Bearer <your key>" } -
Restart the app.
Don't name it
AiAkiv. There's a reason the example saysAiAkiv-proj: if the name collides with §1's account connector you can no longer tell them apart. Details in §4. Any name works as long as it differs from the global one.
The project is pinned into the key. The coordinates are frozen inside it, so
this folder doesn't move when you change Main in the console. The check-target
tool shows binding as "api-key".
⚠ The key is your ID card. Leaking it means handing over access to your memory wholesale: don't commit
config.toml. The full minimum is in Key hygiene in Authentication.
3. Both setups meet inside one app
In the ChatGPT app, both setups can be visible at once.
- The account connector (§1) attaches to the account, so registering it on the web makes it visible in this app too.
- The folder's key (§2) is read when you start work in that folder.
So in the same app you end up with chat going through the connector and folder work going through the folder's key. That isn't a problem in itself: but it does start to get confusing which one saved where.
4. Running both: register different names
§1 and §2 can be used simultaneously. With one precondition.
The global and folder MCP server names must differ.
Name Global: account connector AiAkivFolder: .codex/config.tomlAiAkiv-proj
If both are AiAkiv, there's no way to say which one to use. The tool names
collide too, so the AI picks whichever it likes at the time and you only learn
where a save went afterwards. Split the names and you can start saying "save
through AiAkiv-proj."
The name doesn't have to be AiAkiv-proj. It only has to differ from the
global one: with several folders, something like AiAkiv-<project> that
identifies the project is better.
5. Recommended: use one, and if you use both, add a check
Use either §1 or §2, not both. With one setup there's no confusion about where saving goes.
If you must run both, keep two habits.
- Name the side you want. Split the names per §4 and say which one when you give work.
- Check the save target often. See §Checking below. ChatGPT tends to call
get_save_targeton its own fairly readily, so it follows a request to check.
Checking
Ask your AI before you start work.
where are you saving right now?
The AI calls get_save_target and reports back. The binding value tells you
which setup you're attached through.
binding |
Meaning |
|---|---|
"main" |
§1 account connector: follows Main from the console |
"api-key" |
§2 the folder's key: pinned to that project |
If the project name carries a (Main) suffix, you're following the global
Main.
Every other value
bindingcan take is in Confirming it attached in Folder binding.
Common problems
- I don't know which app I opened. If the icon says ChatGPT, use §2; if it says ChatGPT classic, use §1.
- I added the folder config and it doesn't attach. Check whether you used the OAuth form. ChatGPT can't use OAuth: it has to be §2's key method.
- Saving goes to the wrong project. This happens when both setups are on and the names are identical. Rename the folder side per §4.
- No tools at all in a new chat. Connectors are enabled per conversation: step 4 in §1.
- I removed the connector, re-added it, and it won't attach. The old state is cached → Common problems.
Related
- Folder binding generally, and other clients → Folder binding
- Folder binding in Claude Desktop → Claude Desktop
- Authentication (OAuth and API keys) and key hygiene → Authentication
- The concepts of Main, projects, and the save target → Teams and projects
- Copying MCP config from the console → Console