OXYGENHUB

Keyless agents can't create tags: push doesn't carry the tag signer, and tag authorization ignores certificates issue #129 closed: completed andymccall opened this · 0 comments

andymccall

Found releasing OxygenFlow 0.2.0 (2026-10-20 01:10): oxy tag create v0.2.0 under Claude's keyless home, then oxy push, was refused "tags/v0.2.0: unknown key 8ac2d9659708". Every earlier release tag was signed by Andy's own key.

Three gaps:

  1. Push sends a tag's attestation but not its signer's identity and certificate (the bookmark's signer is attached; a tag made by an earlier process's ten-minute key is not). Fixed in a working-copy change on oxygen main (not committed yet): tag signers' identities and certificates travel with the push; test a_tag_signed_by_an_earlier_short_lived_key_is_pushed reproduces "unknown key" without it.
  2. Receive (adopt_tag in repo/tags.rs) authorizes a tag by direct grant, delegate or predecessor, never by certificate and subject grant (certified_authorized, which bookmark updates use). With 1 fixed, the push is then refused "key … may not create tags/v1 under this repository's policy".
  3. Fetch: adopt_tag also runs on fetch; a tag signed by a ten-minute key must be judged at a time the signer did not choose (the hub's acceptance or the log's integrated time, as authorize_in_time does for bookmarks), not at fetch time, or every later fetch refuses it. TagRef has no acceptance or log fields today: a protocol addition (additive key).

Design 3 first; 1-3 together, with tests. Until then a release tag is Andy's to create (his key).

andymccall set labels gap ·

andymccall referenced by change d8524a9f0117 on keyless-tags ·

closed by change 1ec6fdbc6bcb ·

referenced by 2 changes on 20 Oct 2026

ee130dd9eef2 82202a4d0025