Release Notes
Added
- Other programs can message a running chat. Each interactive iota now
listens on a private Unix socket, and a script, a CI hook or another iota
can send it a line: iota resume <id> -m "…" (or iota run <bot> -m "…"
for a running bot) used to refuse a session that was open elsewhere — it
now hands the message to that chat and prints its receipt (woken,
queued, held, or why not: blocked, too-large, refused,
flooded). The message reaches the model at the next safe point — right
away when the chat is idle, between tool calls when it is busy, never in
the middle of one — as a dim [message from …] line, not as something you
typed, and a leading / is never run as a command. The model is told it
came from another process and is nobody's approval. A chat whose tools run
without asking (auto_run, auto_write) answers held and asks you
before the model reads it. A message is not held back after a rate limit
or an Esc the way a finished job's notice is: it goes at once, as
something you typed would. Programs started from the chat find the socket
in IOTA_SOCKET. Only the same OS user can connect; there is no network
listener. Not available on Windows yet.
Fixed
- Hitting a provider's rate limit or usage cap no longer turns into an
endless loop, and Esc really stops. When a request was refused with
429 and retrying didn't help, every background job that finished started
a new attempt and printed another Rate limited (429) error. Now iota
stops on its own: notices from finished jobs wait (each one says so in a
dim line), and while some are waiting iota tries once more later — when
the provider says it may (retry-after), otherwise after a minute, then
less and less often, at most every 30 minutes. Sending a message tries at
once and takes the waiting notices with it; switching to another model or
another provider with /model tries at once there. What you type is
never overtaken by these automatic tries, and a notice is no longer lost
when its turn is refused by a rate limit (any other failure still drops
it, as before). The provider's own message, with its reset time if it
gives one, is still shown. Pressing Esc now also holds the notices
queued behind the turn you stopped: they go with your next message
instead of starting new turns. A 429 now gets at most three more tries
(it used to be ten), and a provider asking to wait more than a minute —
with a 429 or any other error — is no longer waited out silently: iota
stops and holds until then (a day at the most, however long it asks),
unless the provider explicitly insists on being retried.
- The queue's
· ↑ edit hint no longer promises what ↑ can't do. ↑
only brings back a message you typed — never the notice of a finished
background job — yet a queue holding nothing but such notices still
ended in · ↑ edit, and pressing ↑ did nothing. The hint now shows only
while the queue holds something you typed.
Changed
- Tool-call labels are easier to read. The
[shell ls -la]-style label
on every tool call — while the call is being written, while it runs, and
in the line it leaves behind — is no longer one block of cyan. The
brackets are faint, the tool's name is bold cyan, and what follows it is
cyan; when a call shows its arguments as key:value, the keys are faint,
so [srv:search limit:10 query:rust tui] reads as two arguments at a
glance. … +N args and the … of a call still being written are faint
too. The text is exactly what it was, and with NO_COLOR set the label is
plain text as before.
- tokio is 1.54.1 (RUSTSEC-2026-0386). The advisory is about
AsyncFd's constructors, which neither iota nor any crate it builds on
calls, so it never applied.
- rustls-webpki is 0.103.16 (RUSTSEC-2026-0382). It now rejects
certificate chains through the distrusted emSign intermediates, whose
private keys are public. This mattered on Linux, where iota checks a
server's certificate itself against the system's trusted roots; on macOS
and Windows the operating system checks it.
Install iota 0.7.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/iotash/iota/releases/download/v0.7.5/iota-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/iotash/iota/releases/download/v0.7.5/iota-installer.ps1 | iex"
Install prebuilt binaries via Homebrew
brew install iotash/tap/iota
Download iota 0.7.5