Skip to content

fix(ci): run code review on pull requests from forks - #6722

Merged
thomhurst merged 1 commit into
mainfrom
fix/claude-review-fork-prs
Sep 4, 2026
Merged

fix(ci): run code review on pull requests from forks#6722
thomhurst merged 1 commit into
mainfrom
fix/claude-review-fork-prs

Conversation

@thomhurst

@thomhurst thomhurst commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Follow-up to #6720 (which fixed the same class of breakage for Issue Triage). Different root cause, though.

Root cause

claude-review fails on every fork PR — e.g. #6677:

error: Error message: Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable
Attempt 3 failed: Could not fetch an OIDC token. Did you remember to add `id-token: write`?

id-token: write is declared. The problem is that for pull_request events raised from a fork, GitHub ignores the permissions: block. From that run's own log:

Declared Actually granted
contents: write Contents: read
pull-requests: write PullRequests: read
statuses: write Statuses: read
id-token: write no OIDC token minted

Secrets are withheld too, so secrets.CLAUDE_CODE_OAUTH_TOKEN is empty. The job cannot authenticate, and could not have posted a review even if it had. This is a platform constraint, not a misconfiguration — it can only be fixed by changing the trigger.

Fix

Switch to pull_request_target, which runs in base-repository context and so has secrets, OIDC and real permissions.

That inverts the trust model: the PR diff becomes untrusted input to a job that holds write scope. Hardening accordingly:

  • Permissions cut to contents: read + pull-requests: write. The old contents: write / checks: write / statuses: write / issues: write were inert under the old trigger but would be real under this one.
  • Untrusted code is never the working directory. Base ref at the workspace root, PR head into pr-head/ with persist-credentials: false, exposed via --add-dir — the pattern from the action's security docs.
  • github_token + allowed_non_write_users: "*", since the actor is the fork author and never has write access.
  • One write path only: .github/scripts/pr-review-comment.sh takes the PR number from the environment rather than an argument (cannot be retargeted) and the body as an argument rather than a path (no file on the runner can be turned into a public comment). Capped at 2 calls via CLAUDE_CODE_SCRIPT_CAPS.
  • --allowedTools narrowed from bare Bash,Read,Glob,Grep,WebFetch,WebSearch to Read/Glob/Grep, read-only gh pr and git commands, and that helper. WebFetch/WebSearch are dropped — with untrusted content in context they're an exfiltration channel.
  • Prompt states the diff and pr-head/ are data, not instructions.

Residual risk: an injected instruction in a fork diff could cause an unwanted comment on that same PR. Bounded to pull-requests: write, with no code access.

Verification

pull_request_target workflows run from the base branch, so this PR's own claude-review check still executes the old file and will still fail. The change can only be verified on the next fork PR after merge.

https://claude.ai/code/session_01UGaA2Fjvb2F3iYAz2rifM8

Summary by CodeRabbit

  • Chores
    • Added automated tooling to publish pull request review comments when a valid message is provided.
    • Improved the pull request review workflow with more restricted permissions and controlled access to repository changes.
    • Strengthened safeguards around untrusted pull request content and limited automated review actions to approved operations.
    • Automated reviews now use a consistent comment-posting process and can inspect relevant pull request and repository information.

Claude Code Review has been failing for every external contributor, e.g.
PR #6677:

  error: Error message: Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable
  Attempt 3 failed: Could not fetch an OIDC token.

For `pull_request` events raised from a fork, GitHub ignores the workflow's
`permissions:` block: the run log shows Contents/PullRequests/Statuses all
downgraded to read, no OIDC token is minted despite `id-token: write`, and
repository secrets are withheld, so `claude_code_oauth_token` is empty too.
The job could not authenticate, and could not have posted a review if it had.

Switch to `pull_request_target`, which runs in base-repository context and
therefore has secrets, OIDC and real permissions. That makes the PR diff
untrusted input to a job holding write scope, so:

- Permissions cut to `contents: read` + `pull-requests: write`. The previous
  `contents: write`, `checks: write`, `statuses: write` and `issues: write`
  grants were inert under `pull_request` from forks but would have been real
  here.
- The base ref stays at the workspace root; the PR head is checked out into
  `pr-head/` with `persist-credentials: false` and exposed via `--add-dir`,
  so untrusted code is never the working directory.
- `github_token` + `allowed_non_write_users` let the fork author trigger the
  run, since the actor never has write access.
- The only write path is .github/scripts/pr-review-comment.sh, which takes the
  PR number from the environment rather than an argument so it cannot be
  retargeted, and takes the body as an argument rather than a path so no file
  on the runner can be turned into a public comment. Capped at 2 calls via
  CLAUDE_CODE_SCRIPT_CAPS.
- `--allowedTools` narrowed from bare `Bash,Read,Glob,Grep,WebFetch,WebSearch`
  to Read/Glob/Grep, read-only `gh pr` and `git` commands, and that helper.
  WebFetch/WebSearch are dropped - with untrusted content in context they are
  an exfiltration channel.
- The prompt states the diff and pr-head/ are data, not instructions.

Claude-Session: https://claude.ai/code/session_01UGaA2Fjvb2F3iYAz2rifM8
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented Sep 4, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: ec8c1d52-6543-4276-b235-f42087a5e748

📥 Commits

Reviewing files that changed from the base of the PR and between 384d822 and 13de7e8.

📒 Files selected for processing (2)
  • .github/scripts/pr-review-comment.sh
  • .github/workflows/claude-code-review.yml

Included review availability: Your plan provides up to 8 included reviews per hour; 4 remain after this review.


📝 Walkthrough

Walkthrough

The PR adds a validated PR comment helper. The review workflow now uses pull_request_target, separate trusted and untrusted checkouts, reduced permissions, capped script usage, explicit token settings, and restricted Claude Code tools.

Changes

Secure PR review workflow

Layer / File(s) Summary
Review comment helper
.github/scripts/pr-review-comment.sh
The script requires PR_NUMBER and GH_REPO, rejects empty comment bodies, and posts the body with gh pr comment.
Workflow context and checkout
.github/workflows/claude-code-review.yml
The workflow uses pull_request_target, limits permissions to contents: read and pull-requests: write, caps helper usage, and checks out the base and PR head separately.
Review execution and tool restrictions
.github/workflows/claude-code-review.yml
The review step receives PR identifiers and a scoped token. The prompt marks PR content as untrusted and requires the helper script. claude_args permits read operations, selected gh and git commands, and the helper script only.

Estimated code review effort: 4 (Complex) | ~45 minutes

Merge Risk: ⚪ Minimal · up to 13de7

This change enables fork PR reviews while limiting repository access and constraining comments to the triggering pull request. No current merge-blocking risk is identified.

Sequence Diagram(s)

sequenceDiagram
  participant GitHub_Actions
  participant Claude_Code_Review
  participant pr_head
  participant pr_review_comment_sh
  participant gh
  GitHub_Actions->>Claude_Code_Review: provide PR_NUMBER, GH_REPO, and scoped token
  Claude_Code_Review->>gh: read PR view and diff
  Claude_Code_Review->>pr_head: read PR head
  Claude_Code_Review->>pr_review_comment_sh: submit review markdown
  pr_review_comment_sh->>gh: post comment to triggering pull request
Loading

Poem

A rabbit reads each line,
The patch grows clear beneath the moon,
Small changes hop in place,
Tests guard the garden path,
Reviews bloom before the dawn.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: enabling CI code review for pull requests from forks.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/claude-review-fork-prs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Sep 4, 2026

Copy link
Copy Markdown

Greptile Summary

This PR changes Claude review execution to pull_request_target so fork pull requests receive the required authentication and comment permissions. It also separates the trusted base checkout from the PR head, narrows permissions and tools, and introduces a fixed-target comment helper.

  • Adds a dedicated helper that posts only to the triggering pull request.
  • Restricts the workflow token to repository reads and pull-request writes.
  • Checks out fork content under pr-head/ for review.
  • The remaining --add-dir configuration discovery and persisted base credential create a token-disclosure path that should be closed before merging.

Confidence Score: 3/5

The PR is not safe to merge until untrusted added-directory configuration is disabled and the base checkout stops persisting its write-capable credential.

Fork-controlled Claude skills can be loaded from pr-head and direct unrestricted file reads toward the persisted workflow token, which can then be exposed through the allowed public-comment path.

Files Needing Attention: .github/workflows/claude-code-review.yml

Security Review

A fork can add Claude skills or commands under pr-head/.claude/, which are discovered through --add-dir. Those instructions can reach the base checkout's persisted, pull-request-write credential through unrestricted file reads and publish it using the permitted comment helper.

Important Files Changed

Filename Overview
.github/workflows/claude-code-review.yml Moves reviews to a hardened pull_request_target workflow, but added-directory configuration discovery can combine with the persisted base credential to disclose the write-capable token.
.github/scripts/pr-review-comment.sh Adds a narrowly targeted, quoted helper that rejects empty bodies and posts only to the repository and pull request supplied by trusted workflow environment variables.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Fork[Untrusted fork PR] --> Skill[pr-head/.claude skill or command]
  Skill --> AddDir[--add-dir pr-head]
  AddDir --> Agent[Privileged review agent]
  Checkout[Base checkout] --> Token[Persisted GITHUB_TOKEN]
  Token --> Read[Unrestricted Read]
  Agent --> Read
  Read --> Helper[PR comment helper]
  Helper --> Public[Public PR comment]
Loading

Reviews (1): Last reviewed commit: "fix(ci): run code review on pull request..." | Re-trigger Greptile

# or https://code.claude.com/docs/en/cli-reference for available options

claude_args: |
--add-dir pr-head --allowedTools "Read,Glob,Grep,Bash(.github/scripts/pr-review-comment.sh:*),Bash(gh pr view:*),Bash(gh pr diff:*),Bash(git diff:*),Bash(git log:*),Bash(git show:*)"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 security Untrusted skills expose credentials

Passing the untrusted pr-head directory through --add-dir causes Claude Code to load PR-controlled .claude/skills/ and .claude/commands/. The base checkout also persists the write-capable GITHUB_TOKEN, and unrestricted Read can access its runner-owned credential file. A fork can therefore supply instructions that make the agent read the token and publish it through the permitted comment helper. Disable project configuration discovery for the added directory and set persist-credentials: false on the base checkout.

How this was verified: The configured Claude version loads skills from added directories, while the base checkout stores its pull-request-write token in an OS-readable runner file and the comment helper publishes model-provided text verbatim.

@thomhurst
thomhurst merged commit c9557c1 into main Sep 4, 2026
15 checks passed
@thomhurst
thomhurst deleted the fix/claude-review-fork-prs branch September 4, 2026 16:17
thomhurst added a commit that referenced this pull request Sep 4, 2026
#6722 got the trigger right, but the run now fails one step later:

  Refusing to check out fork pull request code from a 'pull_request_target'
  workflow. ... set 'allow-unsafe-pr-checkout: true' on the actions/checkout step.

actions/checkout blocks fork checkouts under pull_request_target because
fetching and then EXECUTING fork code in the trusted context is the classic
pwn request. This workflow only reads it: the head lands in pr-head/ rather
than the workspace root, no build, restore or test step runs against it, and
Claude's tools are limited to Read/Glob/Grep plus read-only git and gh.

Take the documented opt-in, with a comment recording the conditions it
depends on so a later step that builds or runs anything from pr-head/ has to
revisit it.

Claude-Session: https://claude.ai/code/session_014wbSbRPmzSRgvRV5EwxHZE
github-actions Bot pushed a commit to BenjaminMichaelis/TrxLib that referenced this pull request Sep 7, 2026
Updated [TUnit](https://github.com/thomhurst/TUnit) from 1.65.68 to
1.66.16.

<details>
<summary>Release notes</summary>

_Sourced from [TUnit's
releases](https://github.com/thomhurst/TUnit/releases)._

## 1.66.16

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.16 -->

## What's Changed
### Other Changes
* fix: isolated name is lowercase (#​6727) by @​koryphaee in
thomhurst/TUnit#6728
* fix: preserve concurrent Assert.Multiple failures by @​thomhurst in
thomhurst/TUnit#6730
* fix: preserve original HTTP mock request content by @​thomhurst in
thomhurst/TUnit#6731
### Dependencies
* chore(deps): update tunit to 1.66.10 by @​thomhurst in
thomhurst/TUnit#6726
* chore(deps): update dependency dompurify to v3.4.15 by @​thomhurst in
thomhurst/TUnit#6732


**Full Changelog**:
thomhurst/TUnit@v1.66.10...v1.66.16

## 1.66.10

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.10 -->

## What's Changed
### Other Changes
* fix: restore null suppression for built-in assertion methods by
@​thomhurst in thomhurst/TUnit#6725
### Dependencies
* chore(deps): update tunit to 1.66.8 by @​thomhurst in
thomhurst/TUnit#6724


**Full Changelog**:
thomhurst/TUnit@v1.66.8...v1.66.10

## 1.66.8

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.8 -->

## What's Changed
### Other Changes
* fix(ci): make issue triage work for external reporters by @​thomhurst
in thomhurst/TUnit#6720
* fix(ci): run code review on pull requests from forks by @​thomhurst in
thomhurst/TUnit#6722
* fix: suppress nullability warnings after Should NotBeNull assertions
by @​mvanhorn in thomhurst/TUnit#6700
* fix: Avoid HTML report CLI option clashes by @​mvanhorn in
thomhurst/TUnit#6677
### Dependencies
* chore(deps): update tunit to 1.66.0 by @​thomhurst in
thomhurst/TUnit#6719
* chore(deps): update dependency microsoft.kiota.abstractions to 2.1.1
by @​thomhurst in thomhurst/TUnit#6721
* chore(deps): update dependency awssdk.sqs to 4.0.100.12 by @​thomhurst
in thomhurst/TUnit#6723


**Full Changelog**:
thomhurst/TUnit@v1.66.0...v1.66.8

## 1.66.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.0 -->

## What's Changed
### Other Changes
* Compile all C# documentation snippets by @​thomhurst in
thomhurst/TUnit#6695
* Fix `Type` assignability assertions to evaluate represented type (not
`RuntimeType`) by @​thomhurst with @​Copilot in
thomhurst/TUnit#6711
* Clarify ClassDataSource constructor requirements by @​thomhurst in
thomhurst/TUnit#6716
* Add programmatic HTML reporting settings by @​thomhurst in
thomhurst/TUnit#6699
* Fix timeout cancellation diagnostics by @​thomhurst in
thomhurst/TUnit#6715
### Dependencies
* chore(deps): update tunit to 1.65.68 by @​thomhurst in
thomhurst/TUnit#6682
* chore(deps): update dependency verify.tool to v0.9.1 by @​thomhurst in
thomhurst/TUnit#6683
* chore(deps): update dependency mockolate to 3.4.1 by @​thomhurst in
thomhurst/TUnit#6685
* chore(deps): update dependency serialize-javascript to v7.1.1 by
@​thomhurst in thomhurst/TUnit#6687
* chore(deps): update dependency qs to v6.16.0 by @​thomhurst in
thomhurst/TUnit#6691
* chore(deps): update dependency system.reactive to v7 by @​thomhurst in
thomhurst/TUnit#6696
* chore(deps): update dependency imposter to 0.1.10 by @​thomhurst in
thomhurst/TUnit#6701
* chore(deps): update dependency microsoft.kiota.abstractions to 2.1.0
by @​thomhurst in thomhurst/TUnit#6704
* chore(deps): update mstest to 4.4.0 by @​thomhurst in
thomhurst/TUnit#6705
* chore(deps): update dependency dotnet-trace to v10 by @​thomhurst in
thomhurst/TUnit#6706
* chore(deps): update microsoft.testing by @​thomhurst in
thomhurst/TUnit#6703
* chore(deps): update microsoft.testing by @​thomhurst in
thomhurst/TUnit#6713
* chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /docs by
@​dependabot[bot] in thomhurst/TUnit#6707


**Full Changelog**:
thomhurst/TUnit@v1.65.68...v1.66.0

Commits viewable in [compare
view](thomhurst/TUnit@v1.65.68...v1.66.16).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=TUnit&package-manager=nuget&previous-version=1.65.68&new-version=1.66.16)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
intellitect-bot pushed a commit to IntelliTect/EssentialCSharp.Web that referenced this pull request Sep 7, 2026
Updated [TUnit](https://github.com/thomhurst/TUnit) from 1.66.0 to
1.66.16.

<details>
<summary>Release notes</summary>

_Sourced from [TUnit's
releases](https://github.com/thomhurst/TUnit/releases)._

## 1.66.16

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.16 -->

## What's Changed
### Other Changes
* fix: isolated name is lowercase (#​6727) by @​koryphaee in
thomhurst/TUnit#6728
* fix: preserve concurrent Assert.Multiple failures by @​thomhurst in
thomhurst/TUnit#6730
* fix: preserve original HTTP mock request content by @​thomhurst in
thomhurst/TUnit#6731
### Dependencies
* chore(deps): update tunit to 1.66.10 by @​thomhurst in
thomhurst/TUnit#6726
* chore(deps): update dependency dompurify to v3.4.15 by @​thomhurst in
thomhurst/TUnit#6732


**Full Changelog**:
thomhurst/TUnit@v1.66.10...v1.66.16

## 1.66.10

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.10 -->

## What's Changed
### Other Changes
* fix: restore null suppression for built-in assertion methods by
@​thomhurst in thomhurst/TUnit#6725
### Dependencies
* chore(deps): update tunit to 1.66.8 by @​thomhurst in
thomhurst/TUnit#6724


**Full Changelog**:
thomhurst/TUnit@v1.66.8...v1.66.10

## 1.66.8

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.8 -->

## What's Changed
### Other Changes
* fix(ci): make issue triage work for external reporters by @​thomhurst
in thomhurst/TUnit#6720
* fix(ci): run code review on pull requests from forks by @​thomhurst in
thomhurst/TUnit#6722
* fix: suppress nullability warnings after Should NotBeNull assertions
by @​mvanhorn in thomhurst/TUnit#6700
* fix: Avoid HTML report CLI option clashes by @​mvanhorn in
thomhurst/TUnit#6677
### Dependencies
* chore(deps): update tunit to 1.66.0 by @​thomhurst in
thomhurst/TUnit#6719
* chore(deps): update dependency microsoft.kiota.abstractions to 2.1.1
by @​thomhurst in thomhurst/TUnit#6721
* chore(deps): update dependency awssdk.sqs to 4.0.100.12 by @​thomhurst
in thomhurst/TUnit#6723


**Full Changelog**:
thomhurst/TUnit@v1.66.0...v1.66.8

Commits viewable in [compare
view](thomhurst/TUnit@v1.66.0...v1.66.16).
</details>

Updated [TUnit.AspNetCore](https://github.com/thomhurst/TUnit) from
1.66.0 to 1.66.16.

<details>
<summary>Release notes</summary>

_Sourced from [TUnit.AspNetCore's
releases](https://github.com/thomhurst/TUnit/releases)._

## 1.66.16

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.16 -->

## What's Changed
### Other Changes
* fix: isolated name is lowercase (#​6727) by @​koryphaee in
thomhurst/TUnit#6728
* fix: preserve concurrent Assert.Multiple failures by @​thomhurst in
thomhurst/TUnit#6730
* fix: preserve original HTTP mock request content by @​thomhurst in
thomhurst/TUnit#6731
### Dependencies
* chore(deps): update tunit to 1.66.10 by @​thomhurst in
thomhurst/TUnit#6726
* chore(deps): update dependency dompurify to v3.4.15 by @​thomhurst in
thomhurst/TUnit#6732


**Full Changelog**:
thomhurst/TUnit@v1.66.10...v1.66.16

## 1.66.10

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.10 -->

## What's Changed
### Other Changes
* fix: restore null suppression for built-in assertion methods by
@​thomhurst in thomhurst/TUnit#6725
### Dependencies
* chore(deps): update tunit to 1.66.8 by @​thomhurst in
thomhurst/TUnit#6724


**Full Changelog**:
thomhurst/TUnit@v1.66.8...v1.66.10

## 1.66.8

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.8 -->

## What's Changed
### Other Changes
* fix(ci): make issue triage work for external reporters by @​thomhurst
in thomhurst/TUnit#6720
* fix(ci): run code review on pull requests from forks by @​thomhurst in
thomhurst/TUnit#6722
* fix: suppress nullability warnings after Should NotBeNull assertions
by @​mvanhorn in thomhurst/TUnit#6700
* fix: Avoid HTML report CLI option clashes by @​mvanhorn in
thomhurst/TUnit#6677
### Dependencies
* chore(deps): update tunit to 1.66.0 by @​thomhurst in
thomhurst/TUnit#6719
* chore(deps): update dependency microsoft.kiota.abstractions to 2.1.1
by @​thomhurst in thomhurst/TUnit#6721
* chore(deps): update dependency awssdk.sqs to 4.0.100.12 by @​thomhurst
in thomhurst/TUnit#6723


**Full Changelog**:
thomhurst/TUnit@v1.66.0...v1.66.8

Commits viewable in [compare
view](thomhurst/TUnit@v1.66.0...v1.66.16).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
github-actions Bot pushed a commit to IntelliTect/CodingGuidelines that referenced this pull request Sep 7, 2026
Updated [TUnit.Core](https://github.com/thomhurst/TUnit) from 1.65.68 to
1.66.27.

<details>
<summary>Release notes</summary>

_Sourced from [TUnit.Core's
releases](https://github.com/thomhurst/TUnit/releases)._

## 1.66.27

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.27 -->

## What's Changed
### Other Changes
* fix(mocks): initialize mock state before base constructor callbacks by
@​thomhurst in thomhurst/TUnit#6741
### Dependencies
* chore(deps): update tunit to 1.66.16 by @​thomhurst in
thomhurst/TUnit#6733
* chore(deps): update dependency testcontainers.postgresql to 4.15.0 by
@​thomhurst in thomhurst/TUnit#6736
* chore(deps): update dependency testcontainers.redis to 4.15.0 by
@​thomhurst in thomhurst/TUnit#6737
* chore(deps): update dependency testcontainers.kafka to 4.15.0 by
@​thomhurst in thomhurst/TUnit#6735
* chore(deps): update dependency mockolate to 3.5.0 by @​thomhurst in
thomhurst/TUnit#6739


**Full Changelog**:
thomhurst/TUnit@v1.66.16...v1.66.27

## 1.66.16

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.16 -->

## What's Changed
### Other Changes
* fix: isolated name is lowercase (#​6727) by @​koryphaee in
thomhurst/TUnit#6728
* fix: preserve concurrent Assert.Multiple failures by @​thomhurst in
thomhurst/TUnit#6730
* fix: preserve original HTTP mock request content by @​thomhurst in
thomhurst/TUnit#6731
### Dependencies
* chore(deps): update tunit to 1.66.10 by @​thomhurst in
thomhurst/TUnit#6726
* chore(deps): update dependency dompurify to v3.4.15 by @​thomhurst in
thomhurst/TUnit#6732


**Full Changelog**:
thomhurst/TUnit@v1.66.10...v1.66.16

## 1.66.10

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.10 -->

## What's Changed
### Other Changes
* fix: restore null suppression for built-in assertion methods by
@​thomhurst in thomhurst/TUnit#6725
### Dependencies
* chore(deps): update tunit to 1.66.8 by @​thomhurst in
thomhurst/TUnit#6724


**Full Changelog**:
thomhurst/TUnit@v1.66.8...v1.66.10

## 1.66.8

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.8 -->

## What's Changed
### Other Changes
* fix(ci): make issue triage work for external reporters by @​thomhurst
in thomhurst/TUnit#6720
* fix(ci): run code review on pull requests from forks by @​thomhurst in
thomhurst/TUnit#6722
* fix: suppress nullability warnings after Should NotBeNull assertions
by @​mvanhorn in thomhurst/TUnit#6700
* fix: Avoid HTML report CLI option clashes by @​mvanhorn in
thomhurst/TUnit#6677
### Dependencies
* chore(deps): update tunit to 1.66.0 by @​thomhurst in
thomhurst/TUnit#6719
* chore(deps): update dependency microsoft.kiota.abstractions to 2.1.1
by @​thomhurst in thomhurst/TUnit#6721
* chore(deps): update dependency awssdk.sqs to 4.0.100.12 by @​thomhurst
in thomhurst/TUnit#6723


**Full Changelog**:
thomhurst/TUnit@v1.66.0...v1.66.8

## 1.66.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.0 -->

## What's Changed
### Other Changes
* Compile all C# documentation snippets by @​thomhurst in
thomhurst/TUnit#6695
* Fix `Type` assignability assertions to evaluate represented type (not
`RuntimeType`) by @​thomhurst with @​Copilot in
thomhurst/TUnit#6711
* Clarify ClassDataSource constructor requirements by @​thomhurst in
thomhurst/TUnit#6716
* Add programmatic HTML reporting settings by @​thomhurst in
thomhurst/TUnit#6699
* Fix timeout cancellation diagnostics by @​thomhurst in
thomhurst/TUnit#6715
### Dependencies
* chore(deps): update tunit to 1.65.68 by @​thomhurst in
thomhurst/TUnit#6682
* chore(deps): update dependency verify.tool to v0.9.1 by @​thomhurst in
thomhurst/TUnit#6683
* chore(deps): update dependency mockolate to 3.4.1 by @​thomhurst in
thomhurst/TUnit#6685
* chore(deps): update dependency serialize-javascript to v7.1.1 by
@​thomhurst in thomhurst/TUnit#6687
* chore(deps): update dependency qs to v6.16.0 by @​thomhurst in
thomhurst/TUnit#6691
* chore(deps): update dependency system.reactive to v7 by @​thomhurst in
thomhurst/TUnit#6696
* chore(deps): update dependency imposter to 0.1.10 by @​thomhurst in
thomhurst/TUnit#6701
* chore(deps): update dependency microsoft.kiota.abstractions to 2.1.0
by @​thomhurst in thomhurst/TUnit#6704
* chore(deps): update mstest to 4.4.0 by @​thomhurst in
thomhurst/TUnit#6705
* chore(deps): update dependency dotnet-trace to v10 by @​thomhurst in
thomhurst/TUnit#6706
* chore(deps): update microsoft.testing by @​thomhurst in
thomhurst/TUnit#6703
* chore(deps): update microsoft.testing by @​thomhurst in
thomhurst/TUnit#6713
* chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /docs by
@​dependabot[bot] in thomhurst/TUnit#6707


**Full Changelog**:
thomhurst/TUnit@v1.65.68...v1.66.0

Commits viewable in [compare
view](thomhurst/TUnit@v1.65.68...v1.66.27).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=TUnit.Core&package-manager=nuget&previous-version=1.65.68&new-version=1.66.27)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.

1 participant