Skip to content

fix(ci): keep issue triage focused on triage - #1086

Merged
phernandez merged 2 commits into
mainfrom
codex/keep-issue-triage-triage-only
Jul 16, 2026
Merged

fix(ci): keep issue triage focused on triage#1086
phernandez merged 2 commits into
mainfrom
codex/keep-issue-triage-triage-only

Conversation

@phernandez

@phernandez phernandez commented Jul 16, 2026

Copy link
Copy Markdown
Member

Why

The automatic Claude issue-triage workflow is intended to classify, label, and comment on new issues. While processing #1084, Claude instead began implementing the reported fix, then became stranded because the triage runner could neither run the required validation nor push its commit. A second explicit request reproduced the same failure.

The workflow should make its triage-only boundary explicit and enforce it at the tool layer so detailed issue reports do not turn into unpublished implementation work.

What Changed

  • Explicitly instruct Claude to stop after labels and any necessary triage comment.
  • Disable Claude Code's built-in git instructions for the triage run.
  • Deny repository edits and git add, commit, remove, and push operations.
  • Use non-interactive dontAsk mode so unavailable approvals cannot wedge the run.
  • Route label writes through a label-only helper bound to the triggering issue.
  • Narrow shell access to the label helper, issue viewing/commenting, and duplicate searches.

Implementation Details

The workflow keeps its existing read-only repository and issue-write permissions. Prompt guidance establishes the intended behavior, while settings-level deny rules prevent the action's automatically supplied git tools from overriding that boundary. Claude can still inspect repository context with Read, Grep, and Glob when useful for accurate triage.

The scripts/edit-issue-labels.sh helper reads the issue number from the trusted workflow event, validates requested labels against the repository, rejects every operation except --add-label, and calls only GitHub's issue-label endpoint. Claude does not receive direct gh issue edit access.

This deliberately does not add an implementation or PR-creation path to issue triage.

Testing

  • Parsed .github/workflows/claude-issue-triage.yml with PyYAML and parsed the embedded settings value with json.loads.
  • Ran bash -n on the label helper.
  • Exercised the helper with a stubbed gh command to verify valid label additions, unknown-label filtering, and rejection of unsupported operations.
  • Ran git diff --check successfully.

No Python application tests were run because this changes only GitHub Actions configuration.

Risks / Follow-ups

The next newly opened issue will provide the live end-to-end verification of the Claude action behavior. The job retains issues: write so it can add labels and post comments, while the tool boundary prevents Claude from directly mutating other issue metadata.

Related: #1084

Signed-off-by: phernandez <paul@basicmachines.co>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2cdadc753e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/claude-issue-triage.yml Outdated
Signed-off-by: phernandez <paul@basicmachines.co>
@phernandez
phernandez merged commit cc8ba43 into main Jul 16, 2026
18 checks passed
@phernandez
phernandez deleted the codex/keep-issue-triage-triage-only branch July 16, 2026 19:02
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