Commit your work¶
A commit finalizes the current change into an immutable snapshot and starts
the next change automatically. There is no staging area and no tovio add — TOVIO tracks your
working copy as the current change continuously, so everything you've edited is already in. You commit
when a unit of work is done, not to "stage" it first.
This commit is recorded and reversible
Right after committing, tovio undo returns your local working tree and repository state to the
state before that commit. See Undo and redo recorded operations.
What works today
tovio commit -m "<message>", the interactive prompt (commit without -m), and --amend are all
in the shipped CLI. One flag on this page — --intent — is specification-only: it describes
the designed surface, not a flag you can run yet. The standalone tovio amend spelling is also
specification-only; tovio commit --amend is the shipped form.
flowchart LR
E["edit<br/>(auto-tracked)"] --> C["tovio commit -m"] --> F(["✓ chg:a3f7 finalized"]) --> N["chg:b8e2<br/>(next change, auto-started)"]
More diagrams for the full day-to-day loop: Branching, committing & merging workflows.
Commit with a message¶
To save the current change, give it a message:
✓ committed chg:a3f7b2… blake3:19d787680b…
2 file(s) · new change chg:b8e201… · undo with `tovio undo`
Two things just happened:
- The change
chg:a3f7b2…was finalized into an immutable commit (blake3:…is the commit's content address). Its Change ID stays the same no matter how you rewrite its history later. - A fresh change (
chg:b8e201…) was started for you. You're already in it — keep editing.
You never run tovio add. Everything tovio status listed as modified is part of the
commit. (Real Change IDs are 26 base32 characters; the ones on this page are shortened for reading.)
Commit interactively (no -m)¶
If you omit -m at an interactive terminal, commit asks for the message in place — not in a blank
editor. It names the change being finalized and how many files it carries:
An empty message is refused the same way a missing -m is (TVO-CLI-019).
In scripts, -m is required
With --json, --quiet, or no terminal attached, commit can't prompt, so it requires -m.
Without it you get TVO-CLI-019 — This commit needs a message (a usage error, exit code 2) with the
remediation tovio commit -m "<message>". This keeps the machine contract predictable.
Record intent alongside the message¶
--intent is designed to record a structured, natural-language why next to the what: the message
says what changed; the intent captures the reasoning, which travels with the commit and shows up in
tovio log.
Not yet available
--intent is in the CLI specification but not in the shipped grammar — tovio commit --intent
is rejected today. The shipped way to attach reasoning is tovio log --why's rationale object,
authored today through tovio resolve --why (Resolve conflicts).
Fold edits into the current change (--amend)¶
If you want to add more edits (or fix the message) without starting a new change, amend instead of committing:
--amend folds the current working change into the last commit and preserves its Change ID. With
-m it rewrites the message; without -m the existing message is kept. It is refused on a lane with
no commits yet. Amending is a history rewrite, and like every rewrite in TOVIO it keeps the change's
identity intact — see Rewrite history safely.
The --json form¶
{
"result": {
"change": "chg:a3f7b2…",
"commit": "blake3:…",
"files": 2,
"next_change": "chg:b8e201…"
}
}
The JSON envelope reports the finalized Change ID, its commit address, the file count, and the new
change started in its place ("amended": true replaces next_change on an amend), with no glyphs or
warmth lines — that decoration is human-terminal only.
There is no ci commit alias
tovio ci is the CI/CD subcommand group (tovio ci check, tovio ci compile), not a commit alias.
tovio ci -m "…" is a parse error — use tovio commit -m "…".
Where to go next¶
- Ready to ship this change onto a lane? → Land a change
- Want to break one commit into several, or fold fixups in? → Rewrite history safely
- Want to confirm what's about to be committed first? → Read your status
Last reviewed September 9, 2026
Suggest an improvement to this page Not for security reports — see disclosure