Skip to content

fix: Grant pull-requests:read so the lint-pr-title workflow works in internal repos#86

Merged
keelerm84 merged 1 commit intomainfrom
mk/sdk-2331/lint-pr-title-perms
May 7, 2026
Merged

fix: Grant pull-requests:read so the lint-pr-title workflow works in internal repos#86
keelerm84 merged 1 commit intomainfrom
mk/sdk-2331/lint-pr-title-perms

Conversation

@keelerm84
Copy link
Copy Markdown
Member

Summary

The reusable workflow at .github/workflows/lint-pr-title.yml fails on internal/private LaunchDarkly repos with ##[error]Resource not accessible by integration (HTTP 403).

amannn/action-semantic-pull-request calls the GitHub REST API to fetch the PR title. Because the reusable workflow declares no permissions: block, it inherits the caller's default GITHUB_TOKEN scopes (Contents/Metadata/Packages: read). Public repos return PR data without pull-requests scope, but internal/private repos require pull-requests: read, so the action 403s.

This adds permissions: pull-requests: read to the main job, fixing all callers in one place.

…internal repos

The reusable workflow uses amannn/action-semantic-pull-request, which calls
the GitHub REST API to fetch the PR title. Without an explicit permissions
block, the workflow inherits the caller's default GITHUB_TOKEN scopes
(Contents/Metadata/Packages: read). Public repos return PR data without
pull-requests scope, but internal/private repos require pull-requests:read,
so the action returns 403 Resource not accessible by integration.

Adding pull-requests:read to the job fixes all callers in one place.

SDK-2331
@keelerm84 keelerm84 marked this pull request as ready for review May 7, 2026 15:30
@keelerm84 keelerm84 requested a review from a team as a code owner May 7, 2026 15:30
@keelerm84 keelerm84 merged commit 2e6676d into main May 7, 2026
3 checks passed
@keelerm84 keelerm84 deleted the mk/sdk-2331/lint-pr-title-perms branch May 7, 2026 15:31
This was referenced May 8, 2026
kinyoklion added a commit to launchdarkly/python-server-sdk-otel that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants — since this
caller had no `permissions` block, every run now hits `startup_failure`.
Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix being applied
across SDK repos that use the reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: GitHub Actions workflow-only change that widens permissions
minimally to allow the reusable lint job to start; no runtime/product
code is affected.
> 
> **Overview**
> Updates `.github/workflows/lint-pr-title.yml` to explicitly grant
`permissions: pull-requests: read` at the workflow level.
> 
> This aligns the caller workflow’s permissions with the reusable
`launchdarkly/gh-actions` lint workflow requirements, preventing
`startup_failure` when the job runs.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
9153434. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/python-eventsource that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, every run hits
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix being applied
across SDK repos that use the reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: workflow-only permission change that does not affect product
code. Main impact is whether the CI workflow can start and read PR
metadata.
> 
> **Overview**
> Adds an explicit workflow-level `permissions: pull-requests: read` to
`.github/workflows/lint-pr-title.yml` so the reusable `lint-pr-title`
workflow can access PR metadata and avoid `startup_failure`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
ef319c9. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
kinyoklion added a commit to launchdarkly/js-sdk-common that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, the workflow fails with
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` check on this PR exits `success` rather
than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix being applied
across SDK repos.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow-only change that adjusts GitHub Actions permissions
and does not affect product code or runtime behavior.
> 
> **Overview**
> Ensures the `Lint PR title` workflow can run by explicitly granting
**read** access to pull request metadata via `permissions:
pull-requests: read` at the workflow level.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
d9c3474. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/dotnet-logging-adapter-nlog that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (in launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so callers
without an explicit `permissions` block now cause a `startup_failure`.
This adds the minimum required permission to fix it.

Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

- No product code is affected — workflow-only change.
- `php-server-sdk-otel` was not included in this rollout due to a push
permission issue; it may need to be addressed separately.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow-only change that only adjusts GitHub Actions
permissions to fix a startup failure; no product/runtime code is
affected.
> 
> **Overview**
> Fixes the `Lint PR title` GitHub Actions workflow startup by adding an
explicit workflow-level `permissions: pull-requests: read`, allowing the
referenced reusable workflow to run under `pull_request_target` without
`startup_failure`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
4d56848. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/node-client-sdk that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, every run hits
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix applied
across SDK repos that use the reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow-only change that only broadens permissions to read
PR metadata for the title linter.
> 
> **Overview**
> Fixes PR title linting runs that were failing at startup by adding a
workflow-level `permissions: pull-requests: read` to
`.github/workflows/lint-pr-title.yml`, allowing the called reusable
workflow to request the permissions it needs.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
218b4ce. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/openfeature-php-server that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, every run hits
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix being applied
across SDK repos.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: workflow-only change that adds minimal `pull-requests: read`
permission to allow the reusable PR-title linter workflow to start
successfully.
> 
> **Overview**
> Ensures the `Lint PR title` GitHub Actions workflow can run by
explicitly granting `pull-requests: read` permissions at the workflow
level in `.github/workflows/lint-pr-title.yml`, matching the permissions
required by the reused `launchdarkly/gh-actions` workflow.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
3fba275. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
kinyoklion added a commit to launchdarkly/python-server-sdk-ai that referenced this pull request May 8, 2026
**Requirements**

- [x] I have added test coverage for new or changed functionality — N/A
(CI workflow change only)
- [x] I have followed the repository's [pull request submission
guidelines](../blob/main/CONTRIBUTING.md#submitting-pull-requests)
- [x] I have validated my changes against all supported platform
versions — N/A (CI workflow change only)

**Related issues**

- Same fix as
[launchdarkly/sdk-meta#429](launchdarkly/sdk-meta#429)
- Root cause:
[launchdarkly/gh-actions#86](launchdarkly/gh-actions#86)
added `permissions: pull-requests: read` at the job level inside the
reusable workflow

**Describe the solution you've provided**

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

A reusable workflow can only request a subset of the permissions the
caller has granted. Since this caller had no `permissions` block, the
reusable workflow's permission request could not be satisfied, causing
every run to hit `startup_failure`.

**Describe alternatives you've considered**

The permission could be reverted in the reusable workflow instead, but
that would remove a security improvement (least-privilege scoping)
across all consumers.

**Additional context**

No product code is changed. The only verification needed is that the
`Lint PR title` check on this PR itself passes rather than hitting
`startup_failure`.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk CI-only change that only adjusts workflow permissions to fix
a startup failure; no product code or data handling is affected.
> 
> **Overview**
> Fixes `Lint PR title` workflow startup failures by adding an explicit
workflow-level `permissions: pull-requests: read`, allowing the called
reusable workflow to request PR read access.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
1e52be0. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/erlang-server-sdk that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml` was
updated
([gh-actions#86](launchdarkly/gh-actions#86)) to
declare `permissions: pull-requests: read` at the job level. A reusable
workflow can only request a subset of the permissions the caller grants,
so without an explicit `permissions` block in the caller, the workflow
fails with `startup_failure`. Same fix as
[sdk-meta#429](launchdarkly/sdk-meta#429).

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR succeeds (exits
`success` rather than `startup_failure`)

### Notes

No product code is changed — this is a workflow-only permissions fix.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: workflow-only change that just adds explicit `pull-requests:
read` permissions to allow the reusable lint workflow to start.
> 
> **Overview**
> Fixes the `Lint PR title` GitHub Action by explicitly granting
**workflow-level** `permissions: pull-requests: read`, so the reusable
`launchdarkly/gh-actions` lint workflow can request the needed
permission and avoid `startup_failure`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
9862c80. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/sse-contract-tests that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated
([gh-actions#86](launchdarkly/gh-actions#86)) to
declare `permissions: pull-requests: read` at the job level. A reusable
workflow can only request a subset of the permissions the caller grants
— without an explicit `permissions` block in the caller, every run hits
`startup_failure`. Same fix as
[sdk-meta#429](launchdarkly/sdk-meta#429).

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix. Only
`pull-requests: read` is granted, matching the minimum scope the
reusable workflow requires.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: workflow-only permission tweak that grants minimal read
access and doesn’t affect product code or runtime behavior.
> 
> **Overview**
> Adds an explicit workflow-level `permissions: pull-requests: read` to
`.github/workflows/lint-pr-title.yml` so the reused
`launchdarkly/gh-actions` PR-title linter can start successfully under
`pull_request_target`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
884563f. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/rust-server-sdk-evaluation that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated in
[gh-actions#86](launchdarkly/gh-actions#86) to
declare `permissions: pull-requests: read` at the job level. A reusable
workflow can only request a subset of the permissions the caller grants.
Since this caller had no `permissions` block, the reusable workflow's
permission request cannot be satisfied, causing every run to hit
`startup_failure`.

Same fix as
[sdk-meta#429](launchdarkly/sdk-meta#429),
applied across SDK repositories.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix. Only
`pull-requests: read` is granted, matching the minimum scope the
reusable workflow requires.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Workflow-only change that minimally expands GitHub token scope to
`pull-requests: read` so the reusable lint workflow can start; no
product/runtime code paths are affected.
> 
> **Overview**
> Fixes `Lint PR title` runs failing at startup by granting the workflow
`permissions: pull-requests: read`, allowing the called reusable
workflow to obtain the required PR read access.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
32ed3c7. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
kinyoklion added a commit to launchdarkly/php-server-sdk-redis-predis that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants — without an
explicit `permissions` block in the caller, every run hits
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix. This same
change is being applied across all SDK repos that use the reusable
`lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: workflow-only change that only broadens read access to PR
metadata and does not affect product code or deployments.
> 
> **Overview**
> Adds an explicit workflow-level `permissions: pull-requests: read` to
`.github/workflows/lint-pr-title.yml` so the reusable
`launchdarkly/gh-actions` PR-title lint workflow has the minimum
required access and no longer fails at startup.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
269c350. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
kinyoklion added a commit to launchdarkly/ruby-eventsource that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, every run now hits
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix being applied
across SDK repos that use the reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow-only change that broadens permissions slightly to
allow the lint job to run; no product/runtime code is affected.
> 
> **Overview**
> Fixes `Lint PR title` workflow startup failures by explicitly granting
**workflow-level** `permissions: pull-requests: read`, enabling the
referenced reusable workflow to execute.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
1992dae. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
kinyoklion added a commit to launchdarkly/openfeature-java-server that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, every run hits
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` check on this PR exits `success` rather
than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix being applied
across SDK repos that use the reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: only adjusts GitHub Actions workflow permissions and does
not touch product code. The main impact is whether the PR-title lint job
can start and access PR metadata as intended.
> 
> **Overview**
> Updates the `Lint PR title` GitHub Actions workflow to explicitly
grant `pull-requests: read` permissions at the workflow level.
> 
> This aligns caller permissions with the reusable
`launchdarkly/gh-actions` lint workflow so runs don’t fail at startup
due to insufficient PR access.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
769ec7c. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/haskell-server-sdk that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (in launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, the workflow fails with
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix. This
identical change is being applied across all SDK repos that use the
reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow-only change that adjusts GitHub Actions permissions
so the reusable `lint-pr-title` job can start successfully.
> 
> **Overview**
> Updates the `Lint PR title` GitHub Actions workflow to explicitly
grant `pull-requests: read` permissions at the workflow level, allowing
the reusable `lint-pr-title` workflow to run without `startup_failure`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
4f9ecd5. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/ruby-server-sdk-otel that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated in launchdarkly/gh-actions#86 to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants — without an
explicit `permissions` block here, every run hits `startup_failure`.
Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` check on this PR exits `success` rather
than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix being applied
across SDK repos that use the reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: workflow-only permissions change that enables the reusable
PR-title linter to start; no product/runtime code is affected.
> 
> **Overview**
> Adds a workflow-level `permissions: pull-requests: read` to
`.github/workflows/lint-pr-title.yml` so the reusable `lint-pr-title`
workflow can run without `startup_failure` on `pull_request_target`
events.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
8b8a7e1. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
kinyoklion added a commit to launchdarkly/openfeature-ruby-server that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, every run hits
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix being applied
across SDK repos that use the reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: this only adjusts GitHub Actions workflow permissions and
does not touch product code. The main impact is on CI behavior (enabling
the reusable lint workflow to start successfully).
> 
> **Overview**
> Updates the `Lint PR title` GitHub Actions workflow to explicitly
grant `pull-requests: read` permissions at the workflow level so the
reusable `lint-pr-title` workflow can run without `startup_failure` on
`pull_request_target` events.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
3bae391. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/go-test-helpers that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (in launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, the workflow fails with
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix. This same
change is being applied across all SDK repos that use the reusable
`lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Workflow-only permission tweak to allow a reusable GitHub Action to
run; no product code or data handling changes.
> 
> **Overview**
> Updates `.github/workflows/lint-pr-title.yml` to explicitly grant
`pull-requests: read` permissions at the workflow level so the reusable
`lint-pr-title` workflow can start successfully on `pull_request_target`
events.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
ba9cc01. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/swift-eventsource that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (in
[gh-actions#86](launchdarkly/gh-actions#86)) to
declare `permissions: pull-requests: read` at the job level. A reusable
workflow can only request a subset of the permissions the caller grants.
Without an explicit `permissions` block in the caller, the called job
fails with `startup_failure`. Same fix as
[sdk-meta#429](launchdarkly/sdk-meta#429).

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix. Only
`pull-requests: read` is granted, matching the minimum scope the
reusable workflow requires.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow-only change that minimally expands GitHub Actions
permissions to `pull-requests: read` to avoid reusable-workflow startup
failures.
> 
> **Overview**
> Ensures the `Lint PR title` reusable workflow can start by explicitly
granting **workflow-level** `permissions: pull-requests: read` in
`.github/workflows/lint-pr-title.yml`, matching the minimum permissions
required by the called workflow and preventing `startup_failure`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
e2c27b0. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/openfeature-dotnet-server that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, the workflow fails with
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` check on this PR exits `success` rather
than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix being applied
across SDK repos that use the reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: workflow-only change that widens permissions minimally to
allow the reusable PR-title linter to start successfully.
> 
> **Overview**
> Adds a workflow-level `permissions: pull-requests: read` to
`.github/workflows/lint-pr-title.yml` so the reusable `lint-pr-title`
workflow can request the permissions it needs and run successfully.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
87a5aab. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/php-server-sdk that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, every run hits
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow-only change that only broadens read access to PR
metadata to avoid job startup failures.
> 
> **Overview**
> Ensures the `Lint PR title` workflow can run by explicitly granting
**`pull-requests: read`** at the workflow level, aligning caller
permissions with the reusable `launchdarkly/gh-actions` lint workflow
requirements.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
515ac6d. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/js-client-sdk that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, the workflow fails with
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix applied
across SDK repos.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow-only change that widens GitHub Actions permissions
slightly to allow the reusable PR title lint workflow to start
successfully.
> 
> **Overview**
> Fixes the `Lint PR title` GitHub Actions workflow failing to start by
explicitly granting **workflow-level** `permissions: pull-requests:
read` for the `pull_request_target` trigger.
> 
> This allows the reused `launchdarkly/gh-actions` lint workflow to
request the needed PR read scope and run without `startup_failure`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
622e8fc. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/ruby-server-sdk that referenced this pull request May 8, 2026
**Requirements**

- [x] I have added test coverage for new or changed functionality — N/A
(CI workflow change only)
- [x] I have followed the repository's [pull request submission
guidelines](../blob/main/CONTRIBUTING.md#submitting-pull-requests)
- [x] I have validated my changes against all supported platform
versions — N/A (CI workflow change only)

**Related issues**

- Root cause:
[launchdarkly/gh-actions#86](launchdarkly/gh-actions#86)
added `permissions: pull-requests: read` at the job level inside the
reusable lint-pr-title workflow
- Same fix as
[launchdarkly/sdk-meta#429](launchdarkly/sdk-meta#429)

**Describe the solution you've provided**

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

A reusable workflow can only request a subset of the permissions the
caller has granted. Since this caller had no `permissions` block, the
reusable workflow's `pull-requests: read` request could not be
satisfied, causing every run to hit `startup_failure`.

**Describe alternatives you've considered**

Reverting the permission change in the reusable workflow, but that would
remove a security improvement (least-privilege scoping) across all
consumers.

**Additional context**

No product code is changed. The `Lint PR title` check on this PR itself
should exit `success` rather than `startup_failure`, confirming the fix.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk CI-only change that adjusts GitHub Actions permissions; it
could only affect whether the PR title lint workflow is able to
start/run.
> 
> **Overview**
> Fixes the `Lint PR title` GitHub Actions workflow failing to start by
explicitly granting `pull-requests: read` at the workflow level,
ensuring the called reusable workflow can request PR read access.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
9f914f0. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/roku-client-sdk that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants — without an
explicit `permissions` block in the caller, every run hits
`startup_failure`. Same fix as launchdarkly/sdk-meta#429, applied across
SDK repositories.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix. Only
`pull-requests: read` is granted, matching the minimum scope the
reusable workflow requires.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow-only change that broadens GitHub token permissions
slightly (to `pull-requests: read`) to avoid reusable workflow startup
failures.
> 
> **Overview**
> Updates the `Lint PR title` GitHub Actions workflow to explicitly
grant `pull-requests: read` permissions at the workflow level so the
reused `launchdarkly/gh-actions` lint workflow can start and access PR
metadata without `startup_failure`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
dd7b50a. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/openfeature-python-server that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated in launchdarkly/gh-actions#86 to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, the workflow fails with
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix being applied
across SDK repos that use the reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: workflow-only permission change to allow the reusable
`lint-pr-title` workflow to start; no product code or runtime behavior
is affected.
> 
> **Overview**
> Ensures the `Lint PR title` GitHub Actions workflow can run by
explicitly granting `permissions: pull-requests: read` at the workflow
level when invoking the reusable `launchdarkly/gh-actions` workflow.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
a45b9df. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/rust-server-sdk that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants. Without an
explicit `permissions` block in the caller, the called job fails with
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` check on this PR exits `success` rather
than `startup_failure`
- [ ] Confirm only `pull-requests: read` is granted — no broader
permissions added

### Notes

No product code is changed. This is part of a batch fix across SDK repos
that use the reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk change confined to GitHub Actions permissions, granting only
read access to pull requests to fix a workflow startup failure.
> 
> **Overview**
> Ensures the `Lint PR title` GitHub Actions workflow can run by
explicitly granting **`pull-requests: read`** at the workflow level in
`.github/workflows/lint-pr-title.yml`, matching the permissions required
by the referenced reusable workflow.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
d7f5029. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/haskell-server-sdk-redis-hedis that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated
([gh-actions#86](launchdarkly/gh-actions#86)) to
declare `permissions: pull-requests: read` at the job level. A reusable
workflow can only request a subset of the permissions the caller grants,
so without an explicit `permissions` block in the caller, the workflow
fails with `startup_failure`. Same fix as
[sdk-meta#429](launchdarkly/sdk-meta#429).

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix applied
across SDK repos.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: workflow-only permission change to allow the reusable
PR-title lint job to start; no product code or runtime behavior is
affected.
> 
> **Overview**
> Adds an explicit workflow-level `permissions: pull-requests: read` to
`.github/workflows/lint-pr-title.yml` so the reusable `lint-pr-title`
workflow can run under `pull_request_target` without `startup_failure`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
105ff1f. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
kinyoklion added a commit to launchdarkly/ld-relay-helm that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, the workflow fails with
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix applied
across SDK repos.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow-only change that only expands read access to PR
metadata for this job.
> 
> **Overview**
> Adds a workflow-level `permissions: pull-requests: read` block to
`.github/workflows/lint-pr-title.yml` so the called reusable
`lint-pr-title` workflow has the minimum permissions it needs to run
without `startup_failure`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
978d0d2. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
kinyoklion added a commit to launchdarkly/php-server-sdk-dynamodb that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`.

The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` was
updated (launchdarkly/gh-actions#86) to declare `permissions:
pull-requests: read` at the job level. A reusable workflow can only
request a subset of the permissions the caller grants, so without an
explicit `permissions` block in the caller, every run hits
`startup_failure`. Same fix as launchdarkly/sdk-meta#429.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR exits `success`
rather than `startup_failure`

### Notes

No product code is changed — workflow-only permissions fix being applied
across SDK repos that use the reusable `lint-pr-title` workflow.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk because it only adjusts GitHub Actions workflow permissions
and does not change product code or runtime behavior.
> 
> **Overview**
> Adds a workflow-level `permissions: pull-requests: read` to
`.github/workflows/lint-pr-title.yml` so the reusable `lint-pr-title`
workflow can access PR metadata and avoid `startup_failure`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
91451ed. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
kinyoklion added a commit to launchdarkly/android-client-sdk that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`. The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml` now
declares `permissions: pull-requests: read` at the job level (per
launchdarkly/gh-actions#86), and a reusable workflow can only request a
subset of permissions the caller grants. Without an explicit
`permissions` block in the caller, the called job fails with
`startup_failure`.

Same fix as launchdarkly/sdk-meta#429, applied across SDK repositories.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` workflow run on this PR completes
successfully (no `startup_failure`)

### Notes

This is part of a batch fix applied to all SDK repos that use the
reusable `lint-pr-title` workflow. No application code is changed.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow-only change that only adjusts GitHub Actions
permissions and does not affect application code.
> 
> **Overview**
> Ensures the reusable `lint-pr-title` workflow can run on
`pull_request_target` events by explicitly adding **workflow-level**
`permissions: pull-requests: read`, preventing `startup_failure` due to
insufficient caller permissions.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
5645129. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
kinyoklion added a commit to launchdarkly/dotnet-core that referenced this pull request May 8, 2026
## Summary

Adds `permissions: pull-requests: read` at the workflow level in
`.github/workflows/lint-pr-title.yml`. The reusable workflow at
`launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main` now
declares `pull-requests: read` at the job level (via
launchdarkly/gh-actions#86). A reusable workflow can only request a
subset of the caller's granted permissions, so without an explicit
`permissions` block here, the called job fails to start
(`startup_failure`).

Same fix as launchdarkly/sdk-meta#429, applied across SDK repositories.

## Review & Testing Checklist for Human

- [ ] Verify the `Lint PR title` check on this PR exits `success` rather
than `startup_failure`

### Notes

- `launchdarkly/php-server-sdk-otel` could not be updated due to a push
permission issue (403) and will need to be fixed separately.

Link to Devin session:
https://app.devin.ai/sessions/c7b96da5c9074500aa684bc9a9ba1c31
Requested by: @kinyoklion

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk workflow permission tweak; it only expands the action’s read
access to PR metadata and doesn’t affect application code or
deployments.
> 
> **Overview**
> Ensures the `Lint PR title` reusable workflow can run by explicitly
granting **workflow-level** `permissions: pull-requests: read` in
`.github/workflows/lint-pr-title.yml`, avoiding `startup_failure` when
the called workflow requests PR read access.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
484a4bf. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Devin AI <158243242+devin-ai-integration[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.

2 participants