You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fischer Hunt edited this page Aug 30, 2026
·
2 revisions
Workflows: Extending
Extensions are ordinary executable child processes speaking a versioned
JSONL protocol over stdin/stdout — no embedded scripting runtime. Start
with docs/extensions.md
and the working examples under
docs/extensions/.
What extensions can contribute
Tools the model calls (override a built-in by using its name)
Slash commands in the / picker
Hooks — rewrite or swallow a submitted line, act at startup
Session naming from a command or tool result
Extensions cannot ask the user questions; the protocol deliberately has
no such method. An extension that needs input from the person at the
keyboard reads it from configuration under ~/.e/.
Reference examples
Example
What it shows
hello.mjs
minimal tool
scaffold.mjs
starting point for a new extension
mcp.mjs
one MCP stdio server's tools as extension tools
subagent.mjs
bounded delegated e ask --json child turns
worktree.mjs
startup-hook launcher (e -w)
gate.mjs / protected.mjs
tool_call hook guarding paths
Recipes
(empty on purpose — this is where community setups land: editors,
containers, CI harnesses, multi-agent topologies. Note the e version you
wrote the recipe against.)