Troubleshooting¶
The summary of each run says what the assistant did and why; the runs are under Actions → Issue assistant.
| Symptom | Cause | Fix |
|---|---|---|
| No comment on an issue that you or another maintainer opened | Issues of the owner, members and collaborators get labels only | Run the workflow by hand with the task triage and the dry run turned off |
| No comment, and the run notes No credentials for Claude are configured, or another engine | The engine's secret is missing | Add the secret that Engines names, such as CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY for Claude, to the environment issue-assistant, as Set up a repository shows |
No comment, and the job analyze is skipped |
The repository variable ISSUE_ASSISTANT_AI is off |
gh variable delete ISSUE_ASSISTANT_AI |
No comment, and the issue has the label invalid |
The AI took the issue for spam | Remove the label; to get an analysis, run the workflow by hand |
| No comment, and the run notes Daily limit of AI runs reached or Daily limit of analyses for this reporter reached | More new issues, follow-ups and replies after a release came in during the 24 hours before than max_per_day allows, or the reporter opened more than max_per_author_per_day issues in them |
Run the workflow by hand with the task triage. If your repository usually gets more issues a day, raise the limit under [engine] in config.toml |
| A comment after the release left the issue closed, and the run notes Limit of comments read after the release reached | The AI reads only release_replies comments of the reporter after each release |
Read the comment and reopen the issue yourself, or run the workflow by hand with the task release-reply |
No comment, and the job apply shows an error |
The checks refused the AI's answer, such as one that broke its schema or held something like a secret; nothing was posted | The error names the reason; run the workflow by hand to try again |
analyze waits for a runner |
The runs of one issue wait for each other, first in, first out; or the runner ubuntu-24.04-firewall is not available to the repository |
Wait for the run before it. A job that finds no runner fails after 24 hours: check the preview's README, and meanwhile name another runner for the AI with gh variable set ISSUE_ASSISTANT_AI_RUNNER --body ubuntu-24.04, as What if the firewall runner is gone? explains, or set ISSUE_ASSISTANT_AI to off |
The job event fails with ISSUE_ASSISTANT_AI_RUNNER names the runner |
The variable names a runner where nothing would keep the AI to the hosts of the firewall policy, such as a self-hosted runner or ubuntu-latest |
Name one of GitHub's runners of Ubuntu with a fixed version, such as ubuntu-24.04, or gh variable delete ISSUE_ASSISTANT_AI_RUNNER |
The step Make sure that the block holds of analyze fails |
On the runner of ISSUE_ASSISTANT_AI_RUNNER, Harden-Runner still let requests to a host outside the firewall policy through after a minute: in a private repository without a subscription of StepSecurity, while its service is down, or when its agent gave up at its start, with Reverted changes in the log of its step |
Run the job again. In a private repository, subscribe to StepSecurity, or gh variable delete ISSUE_ASSISTANT_AI_RUNNER to use the firewall runner again |
| A job without the AI hangs after its last step, at Cleaning up orphan processes, until its timeout, or its checkout fails with Couldn't connect to server | Harden-Runner before 2.22.3, on a runner in westus2, the region that the first lines of the log of the job name: its agent misses the addresses of the allowed hosts there and drops them |
Update to the latest release, whose workflows carry a fixed Harden-Runner, and run the job again |
analyze waits for a review |
The environment issue-assistant requires reviewers |
Remove the reviewers; the rule that only the default branch may use the environment is the protection it needs |
A step of analyze fails to connect, and the summary of the run lists a denied host |
The egress firewall blocked a host that the engine's action needs, often after an update of the action | Update to the latest release and run install again. It keeps your firewall policy, and check then names each host of the template that the policy misses, to add there |
| Every run fails with is no valid TOML or must be a whole number, a string, a list of strings or true or false | A settings file isn't TOML, or a value has the wrong type, such as a number in quotes | Fix the file and the key that the error names; run check to see every problem at once |
| Runs warn of an unknown key or a key that belongs in the section of another | A key has a typo or stands in the wrong section, so the assistant keeps its default | Rename or move the key as the warning suggests; check fails on it in your CI |
check says replace the starter's first line of project.md |
The file still describes no project, and the AI reads it before every task | Write what the project does and for whom, and where its code and documentation are |
check says that labels differ only in case |
GitHub takes bug and Bug for one label |
Keep one of them in .github/labels.toml |
check says that a workflow differs from the template of the issue assistant |
The workflow was changed by hand, or comes from another release than the action of the check | Run the commands that the message names, which install the templates of the check's release |
| An issue closed when its fix was merged, not with the release | GitHub closes the issues that a merged pull request names | Under Settings → General → Issues, clear Auto-close issues with merged linked pull requests; a repository without releases sets close_with_release = false |
An issue with fixed-in-next-release stays open after a release |
The release is a draft or a pre-release, it doesn't contain every pull request that fixes the issue, or a maintainer set the label by hand after it, which waits for the next one | Publish a final release that contains the fixes; the sweep of the next morning closes the issue, or start Issue lifecycle by hand |
| An issue still waits for its reporter after they changed the title | Only a comment or an edit of the text answers the questions | Nothing to fix: the reporter answers in a comment or in the text. To end the waiting yourself, remove needs-info |
A label of .github/labels.toml is missing in the repository |
The Labels workflow runs when labels.toml changes on main, not before |
Run it by hand: gh workflow run labels.yml |