Skip to content

docs: record how to tag a release from a proxied agent session - #53

Merged
jlevy merged 1 commit into
mainfrom
claude/pr-review-merge-z1qiqv
Aug 22, 2026
Merged

jlevy merged 1 commit into
mainfrom
claude/pr-review-merge-z1qiqv

Conversation

@jlevy

@jlevy jlevy commented Aug 22, 2026

Copy link
Copy Markdown
Owner

Records how to tag a release when git push cannot create the tag, which stopped the
v0.2.1 release one step from done.

What happens

A remote agent session pushes git through a ref-scoped credential broker. Pushes to
refs/heads/* succeed; pushes to refs/tags/* are refused with HTTP 403 at
receive-pack. Two things make it read as an organization egress denial rather than a
channel limit:

  • git push --dry-run passes for the tag the broker then refuses, because dry-run
    stops at ref advertisement.
  • The session proxy records no egress failure at all, so its own logs neither confirm
    nor contradict the theory.

The remedy already exists in tbd shortcut setup-github-cli under "Proxied Remote
Sessions". This puts it in the runbook, at the step where the failure occurs, so it is
found by someone following the runbook rather than only by someone who thinks to go
looking for it.

The change

One new subsection at the end of Publish the Release, after the normal tag-push flow
and its workflow description, so the primary path still reads straight through. It
records that the 403 is not an egress denial, that a GitHub-host 403 with no
x-github-request-id header came from the mediation layer, and the two gh api calls
that create the annotated tag on the direct channel — equivalent to git tag -a, and
starting the release workflow exactly as pushing the tag would.

Verified in this session: v0.2.1 published to npm with provenance via exactly these
calls after the tag push 403'd.

Related

Filed jlevy/tbd#255 proposing the upstream fix, so every tbd repo gets this at
bootstrap rather than each runbook carrying it. ensure-gh-cli.sh already detects the
proxied-session condition and proves the direct channel works before printing the
NO_PROXY recipe; it points at the shortcut for the consequence instead of stating it.
That is the one place the fact is provably relevant and lands in an agent's context
before it can form a wrong model.

Validation

pnpm ci:quality clean: format:check, docs:check (138 Markdown files, 18
maintained), lint:check. Docs-only change.


🤖 Generated with Claude Code

https://claude.ai/code/session_01DHVv9huTFEzuF8j8N72F4y

A remote agent session pushes git through a ref-scoped credential broker.
Branch pushes succeed and `refs/tags/*` is refused with HTTP 403 at
receive-pack, which reads as an egress denial: `git push --dry-run`
passes for the tag the broker then refuses, and the session proxy logs
no failure. That combination stopped a release one step from done.

Record the remedy where the failure happens, at the end of the publish
flow: create the annotated tag on the direct channel through
`gh api .../git/tags` and `.../git/refs`, which starts the release
workflow exactly as pushing the tag would.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DHVv9huTFEzuF8j8N72F4y
@deepsource-io

deepsource-io Bot commented Aug 22, 2026

Copy link
Copy Markdown

DeepSource Code Review

We reviewed changes in a40e32d...828306f on this pull request. Below is the summary for the review, and you can see the individual issues we found as inline review comments.

See full review on DeepSource ↗

PR Report Card

Overall Grade   Security  

Reliability  

Complexity  

Hygiene  

Code Review Summary

Analyzer Status Updated (UTC) Details
Secrets Aug 22, 2026 8:54p.m. Review ↗

Important

AI Review is run only on demand for your team. We're only showing results of static analysis review right now. To trigger AI Review, comment @deepsourcebot review on this thread.

@github-actions

Copy link
Copy Markdown

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 97.28% 5079 / 5221
🔵 Statements 97.28% 5079 / 5221
🔵 Functions 58.93% 132 / 224
🔵 Branches 52.54% 733 / 1395
File CoverageNo changed files found.
Generated in workflow #179 for commit 828306f by the Vitest Coverage Report Action

@jlevy
jlevy merged commit 3cb1d68 into main Aug 22, 2026
4 checks passed
@jlevy
jlevy deleted the claude/pr-review-merge-z1qiqv branch August 22, 2026 20:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants