Skip to content

Add --worktree flag to gh pr checkout - #13946

Merged
tidy-dev merged 26 commits into
trunkfrom
tidy-dev-pr-checkout-worktree
Aug 4, 2026
Merged

Add --worktree flag to gh pr checkout#13946
tidy-dev merged 26 commits into
trunkfrom
tidy-dev-pr-checkout-worktree

Conversation

@tidy-dev

@tidy-dev tidy-dev commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Closes https://github.com/github/gh-cli-and-desktop/issues/264
Closes #972
Xref: #12984

Adds --worktree <path> to gh pr checkout, enabling checkout of a PR into a new git worktree. Re-running the same command against an existing worktree is idempotent (switches branch and syncs). Works with --detach, --force, --branch, and --recurse-submodules.

Usage

gh pr checkout 123 --worktree ./review
gh pr checkout 123 --worktree ./review --detach
gh pr checkout 123 --worktree ./review --force
gh pr checkout 123 --worktree ./review --branch custom-name

Demo

gh-pr-worktree
Text transcript of the demo

All commands are run from the main desktop checkout; the prompt stays demo:desktop throughout, while git -C ../review shows the separate worktree being updated.

  1. Check out a PR into its own worktree
    gh pr checkout 21858 --worktree ../review
    → Prepares a worktree on a new branch fix-merge-conflict-stats and prints:
    ✓ Checked out PR #21858 in worktree ../review / To start working: cd ../review.
    git -C ../review status -sb confirms the worktree is on the PR branch, clean.

  2. Re-running is safe (idempotent)
    gh pr checkout 21858 --worktree ../review
    → Already on the branch, up to date; fast-forwards the worktree by path with no error.

  3. Local work is protected
    A local edit is made in the worktree (git -C ../review commit --amend), creating divergence.
    gh pr checkout 21858 --worktree ../review → refuses: "Not possible to fast-forward, aborting" (your work is preserved).
    gh pr checkout 21858 --worktree ../review --force → resets that worktree back to the PR tip.

  4. Composes with --detach
    gh pr checkout 21858 --worktree ../detached --detach → checks the PR into a second worktree in detached HEAD, without touching a branch.
    git worktree list shows all three side by side:

    • desktop (main, on development)
    • detached (detached HEAD)
    • review (on fix-merge-conflict-stats)

Design decisions

  • Path-based detection: isWorktreeAtPath checks whether a worktree already exists at the target path and if so runs the same sync commands on worktree as is done in non worktree path.
  • Let git handle errors natively: No custom error messages for "branch already checked out" or dirty worktree conflicts
Test scenarios (20 permutations)

Same-repo PR

  1. New worktree, normal - Given no worktree at path, when --worktree <path>, then worktree created with tracking branch
  2. New worktree, detach - Given no worktree at path, when --worktree <path> --detach, then worktree created in detached HEAD
  3. New worktree, force - Given no worktree at path, when --worktree <path> --force, then worktree created (force is no-op for new)
  4. New worktree, custom branch - Given no worktree at path, when --worktree <path> --branch name, then worktree on custom branch name
  5. Existing worktree, normal (idempotent) - Given worktree exists from prior run, when re-run, then branch fast-forwarded
  6. Existing worktree, detach - Given worktree exists, when --detach, then switches to detached HEAD
  7. Existing worktree, force - Given worktree diverged locally, when --force, then hard-reset to remote
  8. Existing local branch, new worktree - Given branch exists but no worktree, when --worktree, then worktree created and synced

Fork PR

  1. New worktree, normal - Given fork PR with no remote, when --worktree, then worktree created with merge/push config
  2. New worktree, detach - Given fork PR, when --worktree --detach, then detached HEAD at fork tip
  3. New worktree, custom branch - Given fork PR, when --worktree --branch name, then custom branch name used
  4. Existing worktree, normal (idempotent) - Given fork worktree exists, when re-run without --force, then branch synced with merge --ff-only (never silently reset)
  5. Existing worktree, detach - Given fork worktree exists, when --detach, then detached HEAD
  6. Existing worktree, force - Given fork worktree diverged, when --force, then reset
  7. Cross-PR switch - Given same-repo worktree, when checkout fork PR to same path, then switches to fork branch

Edge cases

  1. Branch in use - Given branch checked out in main worktree, when --worktree, then git error
  2. Blank flag - When --worktree "", then validation error
  3. Path with spaces - When path contains spaces, then succeeds normally
  4. Relative path - When ./review, then resolved to absolute path
  5. Recurse submodules - Given --worktree <path> --recurse-submodules, then submodules are synced and updated inside the worktree (not the main checkout)

tidy-dev and others added 11 commits July 22, 2026 12:02
Support checking out a pull request into a new git worktree via
`gh pr checkout <pr> --worktree <path>`. Re-running against the same
path fast-forwards the existing worktree (idempotent, matching plain
checkout), and checking out a branch already present in another
worktree fails with a clear message. Adds a git.Client.Worktrees()
helper that parses `git worktree list --porcelain`.

Co-authored-by: Copilot App <[email protected]>
When --worktree is combined with --recurse-submodules, the submodule
sync/update commands ran in the main worktree instead of the newly
created one, leaving the worktree's submodules uninitialized. Prefix the
submodule commands with -C <path> (applied as cmd.Dir, mirroring the
fetch handling) so they operate on the correct worktree.

Co-authored-by: Copilot App <[email protected]>
The missing-remote existing-worktree path used checkout -B <branch>
FETCH_HEAD, which unconditionally reset the branch and could discard
local commits even without --force. Switch to existence-aware logic that
mirrors the non-worktree paths: when the branch exists, check it out and
sync with merge --ff-only (or reset --hard under --force); only create
the branch from FETCH_HEAD when it does not exist yet.

Co-authored-by: Copilot App <[email protected]>
The existing-remote worktree-reuse path assumed the target branch
already existed and ran checkout <branch>, which failed when a new
--branch name was supplied for an already-existing worktree (e.g.
repointing a review worktree at a different PR). Create the branch
tracking the remote when it does not exist yet, mirroring the
new-worktree path.

Co-authored-by: Copilot App <[email protected]>
Use slices.Concat instead of append(prefix, ...) when building the
worktree-scoped submodule commands so the shared prefix slice can never
alias between the two commands. Add a unit test on authenticatedCommand
asserting the leading -C <path> is applied as cmd.Dir and stripped from
the args, which the CommandStubber-based tests cannot observe.

Co-authored-by: Copilot App <[email protected]>
Add the coverage gaps surfaced by review: re-running --detach against an
existing worktree (the per-worktree FETCH_HEAD path), a cmd.Dir
assertion for the worktree-local fetch shape (the real fork/detach
production combo, not just submodule), and a symlink-resolving
isWorktreeAtPath unit test so worktree reuse keeps working when git
reports a canonical path but the user passes a symlinked one. Drop the
custom-branch new-worktree case, which duplicated the new-branch path
already covered by the existing-worktree custom-branch case.

Co-authored-by: Copilot App <[email protected]>
@tidy-dev
tidy-dev marked this pull request as ready for review July 23, 2026 14:15
@tidy-dev
tidy-dev requested a review from a team as a code owner July 23, 2026 14:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a --worktree <path> option to gh pr checkout so users can check out a PR into a separate git worktree, while preserving existing behaviors (detach/force/branch/recurse-submodules) and making re-runs against the same worktree path effectively idempotent.

Changes:

  • Introduces --worktree <path> flag and associated worktree-aware checkout/sync logic for both same-repo and fork PRs.
  • Ensures --recurse-submodules runs submodule operations in the target worktree when applicable, and updates git command execution to correctly handle authenticated commands with -C.
  • Expands unit tests to cover the new worktree flows and helper functions.
Show a summary per file
File Description
pkg/cmd/pr/checkout/checkout.go Adds worktree flag, worktree-aware command planning (including detach/sync/submodules), and authenticated -C handling.
pkg/cmd/pr/checkout/checkout_test.go Adds coverage for worktree scenarios and new helper behavior (including path resolution and -C stripping).

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Low

Comment thread pkg/cmd/pr/checkout/checkout_test.go Outdated

@babakks babakks left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR, @tidy-dev! 🙏 Lots of real edge cases are nicely covered! 🙌

I didn't go through the tests as they may still change. I tried to deep dive into whatever I'm suggesting (as there are a good number of edge cases) and that took some time.

Please have a look and let me know what do you think. Also take these with a pinch of salt, as my overheated brain may have gone so wrong. 😄

Comment thread pkg/cmd/pr/checkout/checkout.go
Comment thread pkg/cmd/pr/checkout/checkout.go
Comment thread pkg/cmd/pr/checkout/checkout.go Outdated
Comment thread pkg/cmd/pr/checkout/checkout.go Outdated
Comment thread pkg/cmd/pr/checkout/checkout.go
Comment thread pkg/cmd/pr/checkout/checkout.go
Comment thread pkg/cmd/pr/checkout/checkout.go
tidy-dev and others added 8 commits July 29, 2026 08:14
- Restore the non-fast-forward // TODO breadcrumb in syncBranchCmds
- Early-return the non-worktree case in detachCmds to reduce nesting
- Reject a --worktree target that is a leaf symlink or non-directory
  via ensureWorktreePathSafe, with unit coverage

Co-authored-by: Copilot App <[email protected]>
- Replace isWorktreeAtPath path-matching with git rev-parse
  --show-prefix --git-common-dir, letting git resolve symlinks, "..",
  case, and trailing slashes; delete resolvePath/EvalSymlinks
- Reject a --worktree target that resolves to the current worktree,
  which would otherwise silently switch the current tree's branch and
  print a nonsensical "cd ." hint

Co-authored-by: Copilot App <[email protected]>
isCurrentWorktree resolves the target with filepath.Abs, which yields a
drive-letter path on Windows (e.g. D:\path\to\wt). Match the -C target
via a wildcard so the show-toplevel stub matches on all platforms.

Co-authored-by: Copilot App <[email protected]>
Collapse the separate worktree-detection helpers (isWorktreeAtPath,
isCurrentWorktree, worktreeToplevel, worktreeInfoAtPath, repoCommonDir)
into a single resolveWorktreeTarget call made once in checkoutRun. It runs
two rev-parse queries (current + target) instead of the previous four and
hands the command builders a plain reuseWorktree bool, so they no longer
depend on the git client for detection and stay pure.

Co-authored-by: Copilot App <[email protected]>
Streamline comments in the worktree checkout path to only the non-obvious
rationale, and rename the worktreeTarget fields to isCurrentWorktree and
isExistingWorktree so they read clearly without explanation.

Co-authored-by: Copilot App <[email protected]>
Match the surrounding codebase, which rarely documents unexported helpers:
remove the godoc on worktreeCheckoutCmds and tighten syncBranchCmds, keeping
comments only where the rationale is non-obvious.

Co-authored-by: Copilot App <[email protected]>
resolveWorktreeTarget deliberately proceeds with default flags when a
rev-parse fails, which the nilerr linter flagged as returning a nil error
after a non-nil one. Have revParseFacts report success via an ok bool
instead so the best-effort fallthrough is explicit and lint-clean.

Co-authored-by: Copilot App <[email protected]>
Reword the --worktree rejection to avoid the "current worktree" jargon,
which is confusing for users who don't think of their main checkout as a
worktree. Point at "the repository you're already in" instead.

Co-authored-by: Copilot App <[email protected]>
@tidy-dev
tidy-dev requested a review from babakks July 29, 2026 14:02

@babakks babakks left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the changes! 🙏

I did a quick review, and they look good. I just need to run it locally and review the tests.

Comment thread pkg/cmd/pr/checkout/checkout.go Outdated
Comment thread pkg/cmd/pr/checkout/checkout.go Outdated
Comment thread pkg/cmd/pr/checkout/checkout.go Outdated
Reject --worktree paths that point inside a different repository or nest
inside an existing worktree with clear messages, instead of deferring to
git (which silently creates a nested worktree or emits a generic error).

Fold all rejection cases into resolveWorktreeTarget, which now returns
(reuseWorktree bool, error), removing the worktreeTarget struct and
simplifying the checkoutRun guard.

Co-authored-by: Copilot App <[email protected]>
@tidy-dev
tidy-dev requested a review from babakks July 29, 2026 18:43
@williammartin
williammartin removed their request for review July 30, 2026 11:53
Cover checking out a PR into a new git worktree, reusing an existing
worktree, detached checkouts, checkouts of fork PRs whose head repo is
not a configured remote, and force syncing across diverging branches.
Each scenario also asserts the main working copy's branch is untouched.

Co-authored-by: Copilot <[email protected]>
Copilot-Session: 6e4cb568-27f3-4c7e-a344-859e2c2d69b0
Comment thread pkg/cmd/pr/checkout/checkout.go Outdated
babakks and others added 4 commits August 4, 2026 10:46
Co-authored-by: Copilot <[email protected]>
Copilot-Session: 6e4cb568-27f3-4c7e-a344-859e2c2d69b0
Co-authored-by: Copilot <[email protected]>
Copilot-Session: 6e4cb568-27f3-4c7e-a344-859e2c2d69b0
git worktree add treats a path that starts with a hyphen as an option,
so a --worktree value like -foo failed with an unknown-switch error.
Pass a -- end-of-options separator before the path in every worktree add
invocation so the value is always parsed positionally.

Co-authored-by: Copilot <[email protected]>
Copilot-Session: 6e4cb568-27f3-4c7e-a344-859e2c2d69b0
@babakks

babakks commented Aug 4, 2026

Copy link
Copy Markdown
Member

@tidy-dev, I pushed a few commits. I think it's good to be merged, but would appreciate if you have a look.


Summary of the changes:

  • Added acceptance tests for pr checkout --worktree: fresh worktree, reuse, --branch rename, force sync across diverging branches, detached checkout, and a fork PR whose head repo is not a configured remote. Each also asserts the main working copy's branch is left untouched.
  • Passed a -- end-of-options separator before the path in every git worktree add call, so a --worktree value starting with a hyphen is parsed as a path instead of an unknown flag.
  • Added a --worktree usage example to the command help text.
    • I know we decided to skip this, but then I remembered we'll mention this new feature in the release notes and people would love to see an example usage in --help docs.
  • Mentioned worktree support in the gh skill reference.
  • Polished the worktree unit tests.

The checkoutRun test stubs hardcoded `git -C /path/to/wt rev-parse`, but the
command runs after filepath.Abs, which yields `D:\path\to\wt` on Windows and
left the stub unmatched (panic: no exec stub). Use a separator-agnostic
`.+path.to.wt` pattern so the stub matches the absolute path on every platform
while still asserting the -C directory.

Co-authored-by: Copilot App <[email protected]>

@babakks babakks left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@tidy-dev
tidy-dev merged commit 8f7afbd into trunk Aug 4, 2026
11 checks passed
@tidy-dev
tidy-dev deleted the tidy-dev-pr-checkout-worktree branch August 4, 2026 11:47
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Aug 21, 2026
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [cli/cli](https://github.com/cli/cli) | minor | `v2.97.0` → `v2.98.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>cli/cli (cli/cli)</summary>

### [`v2.98.0`](https://github.com/cli/cli/releases/tag/v2.98.0): GitHub CLI 2.98.0

[Compare Source](cli/cli@v2.97.0...v2.98.0)

#### Security

A security vulnerability has been identified, and fixed, that binds the local forwarded port to all available network interfaces by default.

Users of `gh codespace ports forward` are advised to update `gh` to version `v2.98.0` as soon as possible.

For more information see: <GHSA-vfhh-p7hm-pxfh>

#### Support worktrees in `pr checkout`

Users can now checkout a pull request into a git worktree by using the new `--worktree PATH` flag in `gh pr checkout`:

```shell
gh pr checkout 12 --worktree ../wt-feature
```

#### Add semantic search to `search issues`

The `gh search issues` command now supports semantic search for issues. Users can select the search type by passing the `--search-type` flag:

```shell
gh search issues --search-type semantic ...

gh search issues --search-type hybrid ...
```

For more information about semantic search see: ["Improved Search for github issues is now generally available"](https://github.blog/changelog/2026-04-02-improved-search-for-github-issues-is-now-generally-available/).

#### What's Changed

##### ✨ Features

- Add --worktree flag to gh pr checkout by [@&#8203;tidy-dev](https://github.com/tidy-dev) in [#&#8203;13946](cli/cli#13946)
- Set GH\_EXTENSION=1 when gh invokes an extension by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14072](cli/cli#14072)
- Add --search-type flag for semantic and hybrid issue search by [@&#8203;michaeljacholke](https://github.com/michaeljacholke) in [#&#8203;14006](cli/cli#14006)

##### 🐛 Fixes

- Fix `RESTWithNext` error type, repairing `gh status` and attestation retries by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;13988](cli/cli#13988)
- Trim spaces when parsing X-Oauth-Scopes in `gh release create` by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14065](cli/cli#14065)
- Fix project item-add output for non-TTY by [@&#8203;zwick](https://github.com/zwick) in [#&#8203;14056](cli/cli#14056)

##### 📚 Docs & Chores

- Slim down dependabot triage comments by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14019](cli/cli#14019)
- Require explicit MR review ownership by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14028](cli/cli#14028)
- Collapse spam triage into the agentic issue-triage workflow by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14027](cli/cli#14027)
- Run Dependabot triage every hour by [@&#8203;sergiou87](https://github.com/sergiou87) in [#&#8203;14030](cli/cli#14030)
- Route deploy key requests through api.Client by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;13989](cli/cli#13989)
- Route ssh key requests through api.Client by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;13994](cli/cli#13994)
- Route gpg key requests through api.Client by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;13997](cli/cli#13997)
- Route autolink requests through api.Client by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14013](cli/cli#14013)
- Route extension requests through api.Client by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14059](cli/cli#14059)
- Route release creation through api.Client by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14062](cli/cli#14062)
- Tell agents to use the MR template in AGENTS.md by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14074](cli/cli#14074)
- Make Dependabot triage cheaper and more decisive by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14079](cli/cli#14079)
- Route release deletions through api.Client by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14077](cli/cli#14077)
- Give Dependabot triage a real reachability check by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14087](cli/cli#14087)
- Restore automatic spam issue closure by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14088](cli/cli#14088)
- Add a scheduled tech debt burndown skill by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14095](cli/cli#14095)
- Use reflect.Pointer instead of deprecated reflect.Ptr by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14098](cli/cli#14098)
- Clarify what belongs in the MR template's testing section by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14103](cli/cli#14103)
- Rename cli-code-reviewer skill to code-review by [@&#8203;BagToad](https://github.com/BagToad) in [#&#8203;14116](cli/cli#14116)
- Add aw-actions group to dependabot configuration by [@&#8203;babakks](https://github.com/babakks) in [#&#8203;14123](cli/cli#14123)
- Isolate tests from local machine's auth and git configuration by [@&#8203;BagToad](https://github.com/BagToad) in [#&#8203;14128](cli/cli#14128)
- Don't ask for feature detection cleanup comments when not needed by [@&#8203;babakks](https://github.com/babakks) in [#&#8203;14139](cli/cli#14139)
- Accept pre-release tags in deployment validation by [@&#8203;BagToad](https://github.com/BagToad) in [#&#8203;14193](cli/cli#14193)
- ci: add temporary step to verify Linux repo signing keys by [@&#8203;babakks](https://github.com/babakks) in [#&#8203;14202](cli/cli#14202)
- Revert "ci: add temporary step to verify Linux repo signing keys" by [@&#8203;babakks](https://github.com/babakks) in [#&#8203;14203](cli/cli#14203)
- Fix issue triage action compatibility \[skip changelog] by [@&#8203;tidy-dev](https://github.com/tidy-dev) in [#&#8203;14207](cli/cli#14207)

##### :dependabot: Dependencies

- chore(deps): bump github.com/sigstore/sigstore-go from 1.2.2 to 1.3.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14047](cli/cli#14047)
- chore(deps): bump the codeql-actions group across 1 directory with 3 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14049](cli/cli#14049)
- chore(deps): bump google.golang.org/grpc from 1.82.1 to 1.83.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14048](cli/cli#14048)
- chore(deps): bump github.com/google/go-containerregistry from 0.21.7 to 0.21.8 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14066](cli/cli#14066)
- chore(deps): bump actions/attest from 4.2.1 to 4.2.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14100](cli/cli#14100)
- chore(deps): bump azure/login from 3.0.0 to 3.0.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14101](cli/cli#14101)
- chore(deps): bump the codeql-actions group across 1 directory with 3 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14091](cli/cli#14091)
- chore(deps): bump github/gh-aw-actions/setup-cli from 0.83.4 to 0.85.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14068](cli/cli#14068)
- chore(deps): bump github.com/google/go-containerregistry from 0.21.8 to 0.21.9 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14119](cli/cli#14119)
- chore(deps): bump github.com/klauspost/compress from 1.19.1 to 1.19.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14120](cli/cli#14120)
- chore(deps): bump the aw-actions group with 2 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14147](cli/cli#14147)
- chore: sign APT repository with both keys by [@&#8203;babakks](https://github.com/babakks) in [#&#8203;13271](cli/cli#13271)
- chore(deps): bump github.com/yuin/goldmark from 1.8.4 to 1.8.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14029](cli/cli#14029)
- chore(deps): bump actions/attest from 4.2.0 to 4.2.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14050](cli/cli#14050)
- Bump golangci-lint in CI to v2.12.2 by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;14102](cli/cli#14102)
- chore(deps): bump the aw-actions group with 2 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14124](cli/cli#14124)
- chore(deps): bump google.golang.org/protobuf from 1.36.11 to 1.36.12 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14140](cli/cli#14140)
- Upgrade gh-aw workflows to v0.85.4 by [@&#8203;tidy-dev](https://github.com/tidy-dev) in [#&#8203;14141](cli/cli#14141)
- Bump Go to 1.26.6 by [@&#8203;github-actions](https://github.com/github-actions)\[bot] in [#&#8203;14143](cli/cli#14143)
- chore: bump go to 1.26.7 by [@&#8203;babakks](https://github.com/babakks) in [#&#8203;14205](cli/cli#14205)
- chore(deps): bump github.com/stretchr/testify from 1.11.1 to 1.12.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14204](cli/cli#14204)
- chore(deps): bump the codeql-actions group across 1 directory with 3 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14169](cli/cli#14169)
- chore(deps): bump golang.org/x/crypto from 0.54.0 to 0.55.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14164](cli/cli#14164)
- chore(deps): bump charm.land/lipgloss/v2 from 2.0.5 to 2.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;14166](cli/cli#14166)
- Bump gh-aw-actions to v0.87.1 and recompile agentic workflows by [@&#8203;BagToad](https://github.com/BagToad) in [#&#8203;14210](cli/cli#14210)

#### New Contributors

- [@&#8203;sergiou87](https://github.com/sergiou87) made their first contribution in [#&#8203;14030](cli/cli#14030)
- [@&#8203;michaeljacholke](https://github.com/michaeljacholke) made their first contribution in [#&#8203;14006](cli/cli#14006)

**Full Changelog**: <cli/cli@v2.97.0...v2.98.0>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODguMCIsInVwZGF0ZWRJblZlciI6IjQzLjI4OC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiLCJhdXRvbWF0aW9uOmJvdC1hdXRob3JlZCIsImRlcGVuZGVuY3ktdHlwZTo6bWlub3IiXX0=-->
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.

Checkout PR by creating a new worktree

3 participants