Skip to content

tenon v0.4.0

Choose a tag to compare

@tenon-code-eu tenon-code-eu released this 19 Oct 17:07
· 302 commits to main since this release

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-in general-purpose agent always exists.
  • Format: a YAML header (name, description, optional tools and model) and a body, which is the system prompt. Claude Code tool names (Read, Bash, Grep...) are translated. model is 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 agent tool. The result is the sub-agent's final answer, cut by output_limit and masked like any tool result.
  • User view: the interface shows ⏺ agent <name> · <description> with the sub-agent's tool calls indented below it. /agents and tenon agents list the agents. With --output json, sub-agent events carry parent_call_id and are framed by SubagentStarted / 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. deny and ask rules apply to tool = "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, like AGENTS.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 agent tool 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.