cd /news/ai-agents/agent-shell-0-78-updates Β· home β€Ί topics β€Ί ai-agents β€Ί article
[ARTICLE Β· art-136981] src=xenodium.com β†— pub= topic=ai-agents verified=true sentiment=↑ positive

agent-shell 0.78 updates

Agent-shell released version 0.78, adding a persistent writable prompt, mid-turn prompt queueing and steering, and two new agents, Antigravity and Qoder, to the Emacs mode for interacting with AI agents over the Agent Client Protocol (ACP). The persistent prompt is enabled by default via agent-shell-persistent-prompt-enabled, with RET queueing and M-RET steering configurable through agent-shell-busy-submit-default-function and agent-shell-busy-submit-override-function. Steering requires the _session/steering ACP extension, which the author says Claude and Codex currently support, and the release also adds drag-and-drop of files from external file managers onto shell or viewport buffers.

read6 min views1 publishedSep 22, 2026

Another month, another agent-shell update. If you missed the last post, have a look at the 0.73 update.

As usual, this post showcases highlights, but please check out the full list of changes if you're after the nitty-gritty.

agent-shell? agent-shell is a native Emacs mode to interact with AI agents powered by ACP (Agent Client Protocol).

Two agents join the family, available as usual via M-x agent-shell, or explicitly as follows:

M-x agent-shell-start-antigravity-agent. M-x agent-shell-start-qoder-agent. Likely the most impactful feature in the release. It's highly discoverable and plenty useful, so I'm expecting a fair amount of uptake.

A typical shell experience offers a prompt. Users type and submit their commands and wait for the command to finish before the shell prompt is offered again.

Deriving from comint-mode, agent-shell was no different. That is, until now.

As of v0.78, agent-shell offers a writeable prompt at the end of the buffer at all times. Submit, and the prompt comes right back while the agent is busy handling the turn. Type and submit again and agent-shell will automatically queue your request if necessary.

While queueing itself isn't a new feature, the shell prompt queueing route offers a freebie in terms of cognitive load. Submit prompts as you used to (via RET binding), and let agent-shell decide whether to handle now or queue for later.

The persistent prompt is enabled by default via agent-shell-persistent-prompt-enabled. If this isn't your cup of tea, it can be easily disabled with:

(setopt agent-shell-persistent-prompt-enabled nil)

The viewport's compose buffer is there either way, and submitting from it mid-turn routes through exactly the same logic.

As of this release, agent-shell can also steer turns (provided the agent supports the _session/steering ACP extension). Steering enables you to course correct in-flight prompts without cancelling or waiting for the prompt processing to finish. As of today, I'm aware of Claude and Codex handling ACP steering, but please reach out if you know of others.

Steering an in-flight turn via M-x agent-shell-prompt-steer offers a similar experience to the existing M-x agent-shell-prompt-queue. That is, prompting the user for text in the minibuffer. Having said that, we now have a new and shiny persistent prompt, and as we now know, the RET binding automatically queues if needed. From the same prompt you can now also steer by submitting via the M-RET binding.

Huge thanks to @OSadovy, who took on the legwork for steering in #777.

With RET and M-RET respectively queueing and steering as needed, the default behaviour is configurable via agent-shell-busy-submit-default-function (queues by default) while the M-RET (or C-u RET) route uses agent-shell-busy-submit-override-function (steers by default). Both customizations accept a function, so swapping would offer RET steering and M-RET queueing with something like:

(setopt agent-shell-busy-submit-default-function
        #'agent-shell-busy-submit-steer)
(setopt agent-shell-busy-submit-override-function
        #'agent-shell-busy-submit-queue)

Both apply wherever a prompt is submitted mid-turn, the shell prompt and the viewport's compose buffer alike. As emacsers, we want all sorts of customizations, so custom functions can be used too, if you'd like something a little different from what's offered.

While we could already C-y paste screenshots from the clipboard, we can now drag and drop files from external file managers onto either shell or viewport buffers. Images get a preview, anything else is attached as an @path link.

Thank you @dustinfarris for #825. While on topic, @dustinfarris fixed file mentions carrying whitespace in paths (#824).

After all this time, I had no idea the temporary thumbnail generated by macOS's screenshot utility is draggable, and so you can now drop it straight into your agent-shell session.

Thanks to @dustinfarris for the tip!

If you'd like to keep an eye on token cost, headers can now show the session's cumulative cost, right after the context usage indicator.

Currently off by default, so opt in with:

(setopt agent-shell-show-cost-indicator t)

Keep in mind cost is displayed for agents reporting cost via ACP. Thank you @mrcnski for #834.

agent-shell folds lots away by default (tool calls, thinking, groups), requiring additional help if we want closer isearch integration. Thanks to @mrcnski's contribution in #832, folded fragments now respect search-invisible.

Searching also folds back what it expanded once you're done, groups included. Also thanks to @Gleek for #827: expanding a fragment no longer clobbers isearch's match data.

Slash command completion is now offered more idiomatically across all three surfaces (shell prompt, viewport compose buffer, minibuffer): it only kicks in when whitespace alone precedes the /. Thank you @izeigerman for #810.

File completion after @ is unchanged.

We now have M-x agent-shell-copy-last-output, which grabs the most recent output regardless of point location, so you can pull the latest response from anywhere in buffer.

Links got a handful of fixes/improvements worth mentioning:

code spans are now linked (dired. C-u N on next/previous page now moves N interactions instead of one, and a negative prefix pages the other way. Moving forward past the newest interaction restores a parked compose snapshot, so C-u N does what pressing the key N times does, rather than stopping short of your draft. Thank you @liaowang11 for #813.

Following on from last month's table work, plain data rows now get a face of their own, and every table face inherits from one base face. If you'd like to restyle tables wholesale, you now have a single place to do it. Thank you @mrcnski for #822.

agent-shell-session-list-page-limit takes a positive integer.agent-shell-session-id agent-shell-session-id returns the current ACP session ID. On that note, there's also M-x agent-shell-copy-session-id for when you just want it in your kill ring.

agent-shell-opencode-default-model-variant was a bit narrow, so it's been replaced by agent-shell-opencode-default-config-options, an alist of whatever OpenCode advertises under "Available config options" when starting a new shell:

(setopt agent-shell-opencode-default-config-options
        '(("model" . "anthropic/claude-opus-4-5")
          ("effort" . "high")
          ("mode" . "plan")))

Options are applied in the order listed, and order matters. Thank you @nhojb for #739.

Four more joining the lot:

With the new renderer offering a richer Markdown experience for some time now, the deprecated markdown-overlays renderer is gone.

If you peeked at the commit logs for the period, you'll see it's been another busy month. Since the last post, 153 commits shipped, 32 issues have been closed and 25 pull requests merged. As of this writing, the backlog sits at 16 open issues and 6 open PRs (versus 11 and 5 last time around).

Zooming out a little, here's how the backlog has tracked since March:

Side note: this chart was generated using the /github-activity skill shared in my emacs-skills repo.

From the graph, it's evident when I became a father, but you can also see I managed to bring things back down, hovering at a fairly stable level since.

All of this requires daily attention πŸ‘‰ hint hint πŸ‘ˆ

These days (especially at the workplace), vendor-neutral tooling matters more than ever, and there are a couple of ways to help keep agent-shell going. Some cost money, others just a click. All are appreciated ;)

agent-shell is built and maintained by me, an indie dev, while the tools it often competes with at the workplace have well-funded teams behind them. Time spent on agent-shell is time away from other work that pays the bills, so if it's useful to you, please consider sponsoring the project. And if your employer benefits from your agent-shell use, nudge them to chip in too, they can typically contribute at a scale individuals can't.

GitHub stars help with exposure, attracting new users and potential sponsors. Starring agent-shell costs nothing and can potentially help bring in more funding, so if you don't mind a couple of clicks, the project can really use another GitHub star.

Thank you to all contributors for these improvements!

comint-highlight-prompt (agent-shell-antigravity (agent-shell-queue link (Package-Requires floors (agent-shell-org-config to Related projects (search-invisible (agent-shell-queue-transient link to README ( Liking agent-shell? Would like to see it evolve? Consider sponsoring the effort.

── more in #ai-agents 4 stories Β· sorted by recency
── more on @agent-shell 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/agent-shell-0-78-upd…] indexed:0 read:6min 2026-09-22 Β· β€”