Release 0.4.6: agents push as themselves 68dcf21fe055
A keyless agent's grant token is its credential for the hub, short-lived
keys are named by their certificate's subject in log and verify, and
`oxy config --unset core.sign` works. See CHANGELOG.
Refs oxygenhub#241
- **A keyless agent's grant token is its only credential (oxygenhub#241).** A home holding an agent grant token and no hub token now offers the grant to that hub, which accepts it for fetch and push as an agent's token of the owner's account (writing when the grant gives `refs`). The agent pushes its own work, so its seal is its own; it needs no personal access token.
6
+
7
+
- **Agents' signatures say whose they are.** A short-lived key is named by the subject it was certified for, so `oxy log` shows `via agent:claude@andymccall` and `oxy verify` shows `signed by agent:claude@andymccall`, rather than the author's name with an unfamiliar key.
8
+
9
+
- **`oxy config --unset core.sign` works.** It failed with "core.sign must be change or seal"; unsetting now returns to the default.
10
+
3
11
## 0.4.5 (2026-10-17)
4
12
5
13
- **Agents sign with no key of their own (oxygenhub#241).** With `author.signer = keyless`, oxy signs with a fresh key the hub certifies for ten minutes whenever it must sign, kept in memory only. The agent proves itself with a grant token its owner made with `oh agent grant NAME` and `oxy auth grant` keeps. The owner's own key signs the grant, which travels inside every certificate issued under it, so the agent's commits count in the owner's name without trusting the hub for authorship. The owner revokes the grant on the hub, and there is no key left to rotate or leak. `keyless.hub` names the hub (default: the default remote's).