aayudha docs Built from de79988 (2026-10-26)

aayudha in OpenAI Codex

Codex, in the terminal and in the IDE extension, reads aayudha's skills, AGENTS.md, and MCP server. You can add aayudha as a plugin, or install it into the repository.

Before you start

Install aayu and check it is on your PATH (see Your first hour):

aayu version

Option 1: the plugin

Codex reads the same marketplace as Claude Code:

codex plugin marketplace add rahulnakmol/agentic-ayudha
codex plugin add aayudha@aayudha

You get one skill per verb ($aayudha:build, $aayudha:ready, …, also under /skills), the home and next commands, the hooks, and the aayudha MCP server. Check it:

codex plugin list
codex mcp list

Trust the hooks

Codex does not run a plugin's hooks until you trust them. Start Codex, open /hooks, and trust the three aayudha hooks: SessionStart, PreToolUse, and PostToolUse. Until you do, nothing stops an agent in Codex from running aayu ship or aayu release itself. Codex asks again after each plugin update, because the hooks name the plugin's version.

aayu doctor tells you when Codex would skip one:

FAIL  codex-hooks  Codex skips aayudha hooks it does not trust, so no guard rail stops an agent from running a human-only verb there: open /hooks in Codex and trust them
                     plugin aayudha@aayudha: the PreToolUse hook is not trusted yet; trust it in Codex's /hooks

Option 2: install into the repository

aayu install --host codex --apply

This writes:

File What it holds
.agents/skills/<verb>/ One skill per verb, which Codex finds in every repository folder
.agents/skills/aayudha-source-command-<name>/ The plugin's commands, as Codex names them: $aayudha:source-command-next, $aayudha:source-command-home, and the hand-offs
AGENTS.md The aayudha sections, which Codex reads as project guidance
.codex/config.toml The aayudha MCP server, between # BEGIN aayudha and # END aayudha; the rest of the file is yours
.codex/hooks.json The session-start and pre-tool hooks

Codex loads a project's .codex/ files only when you trust the project, and it runs new hooks only after you review them: open /hooks in Codex once and trust aayudha's. Until you trust the project, aayu doctor shows that step on its mcp and codex-hooks rows. Then check:

codex mcp list
aayu doctor

What install writes is the same whether or not you have the plugin, so a teammate who clones the repository without the plugin still gets every skill. If you also have the plugin, install turns it off for this repository: the aayudha block in .codex/config.toml sets [plugins."aayudha@aayudha"] enabled = false, so Codex lists each skill and the aayudha server once and runs each hook once. Codex reads that file only in a trusted project, but it reads .agents/skills/ either way, so until you trust the project it lists each skill twice (the plugin's and the repository's), and the plugin's hooks do not stand aside; aayu doctor reports the double until you trust it.

Cursor and Amp read the same .agents/skills/ copies, so installing for them as well adds no second copy.

How Codex takes a request

Codex does not reach for the grill skill on its own, so aayudha tells it how. The AGENTS.md section that install writes, and the session-start hook, say: before changing anything, run aayu grill story --assess --idea "<your words>" --json; when the verdict is unpack, ask you its questions and wait for your answers; and work only on the issue you asked for, never an open or Ready story it picked itself. You can still say "Using aayudha: …" to be explicit.

Human-only steps

Shipping, releasing, accepting a Decision, and responding to an incident are for a person. The MCP server never offers them, and the pre-tool hook stops Codex if it tries to run them in a shell, with the exact command for you to run.

The MCP tools

Codex offers the model the aayudha tools under mcp__aayudha (status, doctor, grill, …). It sends them to the model as one Responses API namespace tool. If you route Codex through your own AI gateway, the gateway must pass namespace tools through. One that drops them leaves the model with Codex's own resource tools only: it can read aayudha's resources but cannot call a verb. The skills still work then, because they run aayu in the shell.

Codex starts the aayudha server with only a few of your variables, such as HOME and PATH. The plugin and the install block also pass it AAYU_GITHUB_TOKEN, GH_TOKEN, GH_CONFIG_DIR, and XDG_CONFIG_HOME, the places aayu looks for your GitHub token, so the server finds the token your shell finds. You should see the status tool answer with your repository's state, not "no GitHub token found".

Codex through your own model provider

A Codex that answers through a custom model provider (a [model_providers.<id>] entry, perhaps behind a wrapper that sets CODEX_HOME) can say "Not logged in" to codex login status and still run. So when Codex is not signed in, aayu asks codex doctor --json, which reads the configuration the way codex exec does. Codex counts as ready to take a local hand-off (aayu build <n> --delegate codex --local) when the active provider needs no OpenAI sign-in and has its credentials: an auth command in its config, or CODEX_API_KEY. A provider whose key comes from another environment variable (env_key) does not count, because aayu never passes a model provider's key to a local receiver; give the provider an auth command instead. A CODEX_HOME set where you run aayu reaches the receiver, so it runs the same Codex home that aayu checked. aayu doctor then shows "codex: … runs through model provider <id>". codex doctor also checks that the provider's endpoint answers, so this one probe does reach the network.

Models

On Codex, aayudha's build, spec, and plan lanes default to GPT-6.1 Sol, and its review lane to Claude Opus 5.5, so the reviewer is never the same family as the builder. aayu models show --host codex lists them all.