Repository navigation
tenon v0.4.0
Sub-agents
The main agent can now hand a self-contained task to a sub-agent. The sub-agent works in its own context and returns one final answer. tenon reads the Claude Code format (.claude/agents/*.md): an agent written for Claude Code works without change.
- Discovery:
~/.config/tenon/agents,~/.claude/agents,~/.agents/agents, then the same folders in the project. A user agent wins over a project agent with the same name. The built-ingeneral-purposeagent always exists. - Format: a YAML header (
name,description, optionaltoolsandmodel) and a body, which is the system prompt. Claude Code tool names (Read,Bash,Grep...) are translated.modelis shown but has no effect: a sub-agent always uses the provider and model of the session. - Model use: the system prompt lists agents; the model launches one with the new
agenttool. The result is the sub-agent's final answer, cut byoutput_limitand masked like any tool result. - User view: the interface shows
⏺ agent <name> · <description>with the sub-agent's tool calls indented below it./agentsandtenon agentslist the agents. With--output json, sub-agent events carryparent_call_idand are framed bySubagentStarted/SubagentCompleted. - Security: a sub-agent never widens permissions. Each of its actions follows the usual rules and approvals, one by one; approvals "yes for the session" are shared with the main agent.
denyandaskrules apply totool = "agent", matched on the agent name. A sub-agent cannot launch a sub-agent. Its actions are in the same audit chain. Project agents are untrusted content, likeAGENTS.md.
Limits: sub-agents run one after the other; max_iterations applies to each one. --resume ignores sub-agent events.
See Sub-agents and security.
Other changes
- The system prompt is about 250 tokens longer (the
agenttool and the agents section). This counts on small local models with a short context window.
Install
brew install tenon-code-eu/tap/tenon
# or
curl -fsSL https://raw.githubusercontent.com/tenon-code-eu/tenon/main/install.sh | sh
Verify a manual download:
minisign -Vm SHA256SUMS -P RWR+vfCWjGO42uRKOxNSrKz5afZPCWJf8iJPO04kFdkhLldZHhxo532F
sha256sum -c SHA256SUMS --ignore-missing # macOS: shasum -a 256 -c SHA256SUMS --ignore-missing
Version 0.x: configuration, options and session/audit formats may still change. License: EUPL-1.2.