Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 07:44
· 35 commits to main since this release

Smith v0.2.0

Smith 0.2.0 can run a turn on a coding agent already installed on the machine.
Claude Code and Codex are drivable as agents rather than as models: each keeps
its own conversation, runs its own tools under its own policy, and streams its
own events, which Smith renders in the transcript beside everything else.

Installed coding agents as a harness

A profile may name a harnessclaude-code or codex — and its turns run
on that CLI instead of a model provider. A harness profile works as the main
agent or as a delegated child.

An agent is also selectable by model id anywhere a model is, with no
declaration at all:

smith --model cli/claude-code/sonnet
smith --model cli/codex/gpt-6-astra

Per-machine settings live under [harness.<name>]: the executable path, the
model, extra arguments, the working directory, the environment, and whether
the CLI may run its own tools. Every value stays layered and
source-explainable like the rest of Smith's configuration.

The CLI's own tools are off by default, named explicitly rather than left
to each CLI's default — an empty --allowedTools for Claude Code,
--sandbox read-only for Codex. Enabling them means the CLI executes reads,
writes, and commands Smith never approved, never scoped to the workspace, and
cannot record as tool history. That is why it is an owner-only setting.

The CLI's own session continues across turns rather than being replayed. Smith
stores the identity the CLI reports and offers it back on the next turn; a CLI
that cannot resume reports a new one and the turn proceeds. The ambient
environment is inherited rather than cleared, because an installed CLI depends
on its own login, PATH, and home — clearing it is what made the earlier
model-shaped bridge report "not logged in".

Harness activity is visible, and never claimed as Smith's

A harness turn streams its session identity, its narration, its answer, and
the tools the CLI ran itself, as they happen. Tools the CLI ran are rendered
distinctly from Smith's own calls — Read(run by the agent) rather than a
projected invocation — because Smith did not dispatch them, did not approve
them, and cannot vouch for them. Rendering the two identically would imply a
guarantee Smith cannot make. Headless output carries them under their own
external_* event types for the same reason.

Upgrading

The macOS and Linux archives, the curl installer, and
@forgeailab/smith@0.2.0 all carry this version. The change is additive: a
profile with no harness behaves exactly as before, and no existing
configuration changes meaning. Existing ~/.smith/config.toml files,
sessions, and protected checkpoints are read unchanged.

The pinned Agent Runtime revision moves to cf446b8 on
fix/smith-command-provider-compat, which makes an externally executed turn
durable the way a direct one is: it accepts a turn checkpoint before invoking
the backend and advances it through completion and publication. Without it
every harness turn published its terminal and then failed with
Internal: turn has no accepted checkpoint, leaving nothing durable behind.

Full Changelog: v0.1.0...v0.2.0