v0.3.2
The model knows where it is. Every agent with tools now sends a built-in
harness paragraph ahead of its own prompt — who it runs inside, what the
machine looks like, and how iota's own command line is driven — and iota
itself runs outside the shell sandbox, so a child agent or an iota mcp add
from the chat just works. A first run writes the starter config; add --url
logs in on the spot; /mcp leaves the chat; the reference moves to iota.sh.
Added
- A built-in harness prompt. An agent with
tools:sends a short paragraph of iota's own ahead of itssystem:— two sentences of identity and two rules (a declined tool call is not retried; a command the sandbox refused is reported as such, not rewritten), an<environment>block (project root, platform, shell, date, theiotabinary, the user and project config files or the-cfile, a missing one marked(absent)), and with theshellset an<iota_cli>block: thatiotaitself runs outside the sandbox, its verbs (mcp add|list|get|remove|login|logout,config check|path|init,list …,run <agent> -m), and the three rules — MCP servers throughiota mcp, everything else by editing the config file andiota config check, every change from the next session. Under 1.5 KB; your prompt follows inside<instructions>, the AGENTS.md overlay after it. Composed at send time like the overlay and never stored: a resumed session and an upgraded binary get the current one, and/model's System tab shows the prompt exactly as sent. An agent withouttools:sends nothing extra. No configuration key (X-43).
Changed
- The README is an introduction. The reference — every config key, the
system prompt in full, every tool parameter, MCP, agent mode, slash commands —
lives at https://iota.sh/docs; the README keeps what a first look needs, and
the two config errors that pointed at a README section point at the site.
How a release is cut moved to
docs/RELEASING.md. - A first run writes the starter config itself. With no
-cand no.iota.yamlin the home or the project,iota(andiota run …) writes~/.iota.yaml— the fileiota config initwrites — names it on stderr, and goes on:OPENAI_API_KEY=… iotais a working first run on a fresh install, and without the key the key error says what to set. Nothing is written when a config exists in either spelling, when-cnames one, or without a home. The two refusals that used to send you toconfig initnow say where anagents:entry goes instead — a run without a config no longer reaches them. iotaruns outside the shell sandbox. Ashellcall whose first word is the running binary —iota mcp add …,iota mcp login <name>, a child agent'siota run <agent> -m "<task>"— is spawned without the sandbox, so it can write the config file, open the browser and reach an API. Only that shape leaves:iotain a pipe, a chain, a$(…)or a backtick stays in. Approval is as it was — a sandboxed set withoutauto_runasks about such a call, the prompt and the call header marked(outside the sandbox);auto_run: trueasks nothing. A parent agent no longer needsnetwork: trueto dispatch a child: the child is isolated by its own agent's configuration (X-44).add --urllogs in on the spot. Once the entry is written,iota mcp add <name> --url <url>probes the endpoint with one bareinitialize: a 401 starts the OAuth login right there — the same steps asiota mcp login, with--no-browserprinting the URL instead of opening the browser — a server that answers without a credential is left atAdded, and one that could not be reached keeps theiota mcp login <name>hint.--auth oauthor--client-idskips the probe and logs in at once;--auth none, an entry with its ownAuthorizationheader, and the new--no-login(a script, CI, a machine without a desktop) write the entry and stop. A login that fails keeps the entry, printsRetry with: iota mcp login <name>and exits non-zero.loginstays for logging in again, or for the login--no-loginskipped (X-41).
Removed
/mcpleaves the chat. The/mcppanel and/mcp login|logout <name>of 0.3.1 are gone. The MCP tab of/toolsalready shows every server's state — a server waiting for a login readsnot logged in: run iota mcp login <name>— and the login isiota mcp login <name>from a shell (a chat already running does not pick the token up; start it again). The startup notice names that command now, and the 80-column banner's command row fits on one line again. No management command is planned for the chat: configuration is headed for a toolset the model calls on your behalf, not for slash commands (X-42).