Skip to content

tenon v0.6.0

Choose a tag to compare

@tenon-code-eu tenon-code-eu released this 19 Oct 22:30
· 268 commits to main since this release

Checkpoints and rewind

Each prompt is now a checkpoint. /rewind (or Esc twice when no turn is running) takes you back to an earlier prompt.

  • What is saved: before write_file or edit_file changes a file, tenon saves its previous content. Writes of sub-agents and inputs rewritten by a hook are saved too. Effects of shell and of MCP tools are not undone: /rewind tells you how many such calls it cannot undo.
  • Three modes: code and conversation, conversation only, or code only. The conversation cannot go back past a compaction; the code still can.
  • Your work is protected:
    • A file you changed after the agent is shown as a conflict, and kept unless you answer y.
    • A file that changes while the /rewind window is open is not touched (file changed during rewind).
    • A path that became a symbolic link is never followed.
    • Writing to an existing file that tenon cannot read is refused, so a rewind can never delete it.
  • Journal: never rewritten. A Rewound event is added to the session and the audit chain, and --resume rebuilds the same state.
  • Command line: tenon rewind --list --resume <id|last> lists the checkpoints of a session.
  • Store: ~/.local/share/tenon/checkpoints (0700/0600). It holds raw file contents, secrets included, so that files are restored exactly. It is never sent to the provider nor written to the logs. Copies are kept 30 days ([checkpoints] retention_days; 0 turns copies off). A file larger than 10 MiB is written without a copy.

See Checkpoints and rewind and security.

Welcome screen and help

  • The welcome screen shows how many skills, agents and hooks are loaded, and lists every / command.
  • /help lists each command with a short description.
  • Long lines wrap instead of being cut.

Other changes

  • New key [checkpoints] in the global configuration. It is refused in .tenon/config.toml.
  • write_file refuses to overwrite an existing file it cannot read (cannot read existing file).

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.