@htekdev/actions-debugger 1.0.133 → 1.0.134

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,91 @@
1
+ id: known-unsolved-078
2
+ title: 'Copilot agent branches not available in `workflow_dispatch` branch picker — cannot manually target Copilot branches'
3
+ category: known-unsolved
4
+ severity: limitation
5
+ tags:
6
+ - workflow_dispatch
7
+ - copilot-agent
8
+ - branch-picker
9
+ - manual-trigger
10
+ - github-copilot
11
+ - ui-limitation
12
+ patterns:
13
+ - regex: 'copilot.*branch.*not.*available|copilot.*branch.*missing.*dispatch'
14
+ flags: 'i'
15
+ - regex: 'workflow_dispatch.*copilot.*branch|copilot.*agent.*branch.*trigger'
16
+ flags: 'i'
17
+ error_messages:
18
+ - "# No error message — Copilot agent branches simply do not appear in the branch selector"
19
+ root_cause: |
20
+ When GitHub Copilot coding agent creates a branch to work on an assigned task,
21
+ the branch uses a namespaced prefix (`copilot/` by default, e.g.,
22
+ `copilot/fix-issue-123`). These branches are created and owned by the Copilot agent.
23
+
24
+ The GitHub Actions UI for `workflow_dispatch` presents a branch picker dropdown
25
+ that allows users to select which branch to run the workflow against. However,
26
+ Copilot agent branches are NOT included in this branch picker.
27
+
28
+ This is a UI-level platform limitation: GitHub filters the branch list shown in the
29
+ `workflow_dispatch` selector and excludes Copilot-owned branches from the list.
30
+ There is no documented API reason why this would be necessary — the branches exist
31
+ and are valid git refs — but the UI omits them.
32
+
33
+ As a workaround, the GitHub CLI or REST API CAN be used to trigger a
34
+ `workflow_dispatch` run targeting a Copilot branch by supplying the `ref` parameter
35
+ explicitly (bypassing the UI picker).
36
+
37
+ This issue was reported in runner#4246 (Feb 2026, 15 reactions) and remained open
38
+ as of June 2026. No ETA for a fix has been provided.
39
+
40
+ Note: This is a separate issue from Copilot agent PR workflows requiring approval
41
+ before running (triggers-027). That entry covers automatic workflows on Copilot PRs;
42
+ this entry covers the inability to manually dispatch TO a Copilot branch via the UI.
43
+ fix: |
44
+ There is no UI fix — Copilot agent branches cannot be selected in the GitHub Actions
45
+ web interface workflow_dispatch branch picker.
46
+
47
+ **Workaround: use the GitHub CLI to trigger workflow_dispatch with an explicit ref:**
48
+ ```bash
49
+ gh workflow run <workflow-file.yml> --ref copilot/fix-issue-123
50
+ ```
51
+
52
+ **Workaround: use the GitHub REST API:**
53
+ ```bash
54
+ curl -X POST \
55
+ -H "Authorization: Bearer $GITHUB_TOKEN" \
56
+ -H "Accept: application/vnd.github+json" \
57
+ https://api.github.com/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches \
58
+ -d '{"ref":"copilot/fix-issue-123","inputs":{}}'
59
+ ```
60
+
61
+ Both the CLI and API accept any valid branch ref, including Copilot branches,
62
+ even though the UI does not display them.
63
+ fix_code:
64
+ - language: yaml
65
+ label: "Trigger workflow_dispatch on a Copilot branch via GitHub CLI (run from local terminal or another workflow)"
66
+ code: |
67
+ # Run locally or in a helper workflow step:
68
+ # gh workflow run deploy.yml --ref copilot/fix-issue-123
69
+
70
+ # Or call via the REST API in a workflow step:
71
+ - name: Dispatch workflow on Copilot branch
72
+ run: |
73
+ gh workflow run deploy.yml \
74
+ --ref "${{ github.head_ref }}" \
75
+ --repo ${{ github.repository }}
76
+ env:
77
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
78
+ prevention:
79
+ - "Use the GitHub CLI (gh workflow run --ref <branch>) instead of the UI when targeting Copilot branches"
80
+ - "Use the REST API dispatches endpoint with an explicit ref to trigger workflows on any branch"
81
+ - "Follow runner#4246 for updates on when UI support for Copilot branches may be added"
82
+ - "Build automation that runs in workflow_run triggered by the Copilot branch's push event instead of requiring manual dispatch"
83
+ docs:
84
+ - url: "https://github.com/actions/runner/issues/4246"
85
+ label: "runner#4246 — Cannot trigger workflows manually targeting a copilot agent branch (Feb 2026, 15 reactions)"
86
+ - url: "https://cli.github.com/manual/gh_workflow_run"
87
+ label: "GitHub CLI — gh workflow run (supports --ref for any branch)"
88
+ - url: "https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#create-a-workflow-dispatch-event"
89
+ label: "GitHub REST API — Create a workflow dispatch event (accepts any ref)"
90
+ - url: "https://docs.github.com/en/copilot/using-github-copilot/using-copilot-coding-agent-in-github"
91
+ label: "GitHub Docs — Using Copilot coding agent"
@@ -0,0 +1,73 @@
1
+ id: runner-environment-247
2
+ title: '`apt-get install` stalls ~75 seconds on ubuntu-24.04 — "Processing triggers for man-db" post-install hook'
3
+ category: runner-environment
4
+ severity: warning
5
+ tags:
6
+ - ubuntu-24.04
7
+ - apt-get
8
+ - man-db
9
+ - package-install
10
+ - performance
11
+ - slow
12
+ patterns:
13
+ - regex: 'Processing triggers for man-db \('
14
+ flags: 'i'
15
+ - regex: 'man-db.*stall|stall.*man-db'
16
+ flags: 'i'
17
+ error_messages:
18
+ - "Processing triggers for man-db (2.12.0-4build2) ..."
19
+ - "Processing triggers for man-db (2.12.0-4build2) ..."
20
+ root_cause: |
21
+ On ubuntu-24.04 runners, installing any package that triggers the `man-db` post-install
22
+ hook causes a ~75-second stall during the `apt-get install` step.
23
+
24
+ The `man-db` daemon (which indexes manual pages for `man` lookups) has a post-install
25
+ trigger that runs `mandb` to rebuild the manual page database after packages are
26
+ installed. On ubuntu-24.04, this database rebuild operation runs synchronously and
27
+ takes approximately 60-90 seconds, blocking the apt post-install phase.
28
+
29
+ Any package that installs manual pages (cmake, make, build-essential, gcc, etc.)
30
+ triggers this slow hook. Workflows that install multiple packages in a single
31
+ `apt-get install` step will still only pay the cost once (one rebuild per transaction),
32
+ but even a single apt install with man pages will stall for over a minute.
33
+
34
+ The `man-db` package is installed by default on ubuntu-24.04 runner images. This
35
+ issue was reported in September 2025 and remains open as of June 2026 (runner#4030).
36
+ fix: |
37
+ Option 1 — Remove man-db before running apt-get install commands:
38
+ ```yaml
39
+ - name: Remove man-db to prevent slow post-install trigger
40
+ run: sudo apt-get remove --purge -y man-db
41
+ ```
42
+ After removing man-db, all subsequent apt installs skip the man page indexing trigger.
43
+
44
+ Option 2 — Disable the man-db auto-update file (lighter weight):
45
+ ```yaml
46
+ - name: Disable man-db auto-update
47
+ run: sudo rm -f /var/lib/man-db/auto-update
48
+ ```
49
+ This deletes the sentinel file that triggers auto-update, preventing the stall without
50
+ uninstalling man-db.
51
+
52
+ Option 3 — Set DEBIAN_FRONTEND and skip recommended packages (partial mitigation):
53
+ Some packages still trigger man-db via direct page installation, but combining
54
+ `--no-install-recommends` reduces the set of affected packages.
55
+ fix_code:
56
+ - language: yaml
57
+ label: "Remove man-db before apt-get installs to eliminate the stall"
58
+ code: |
59
+ - name: Remove man-db (prevents ~75s stall on ubuntu-24.04)
60
+ run: sudo apt-get remove --purge -y man-db
61
+
62
+ - name: Install dependencies
63
+ run: sudo apt-get install -y cmake make build-essential
64
+ prevention:
65
+ - "Remove or disable man-db at the start of jobs that run apt-get install on ubuntu-24.04"
66
+ - "Use sudo rm -f /var/lib/man-db/auto-update as a lighter-weight alternative to removing the package"
67
+ - "Combine all apt-get installs into a single command to pay the man-db trigger cost only once"
68
+ - "Monitor job timing — if an apt step takes 75+ extra seconds on ubuntu-24.04, man-db is the cause"
69
+ docs:
70
+ - url: "https://github.com/actions/runner/issues/4030"
71
+ label: "GitHub runner#4030 — man-db trigger severely stalls package installation on ubuntu-24.04"
72
+ - url: "https://manpages.ubuntu.com/manpages/noble/man8/mandb.8.html"
73
+ label: "Ubuntu mandb(8) manual — man page database indexer"
@@ -0,0 +1,106 @@
1
+ id: runner-environment-248
2
+ title: '`actions/checkout` causes "Duplicate header: Authorization" — git returns 400 on subsequent git operations'
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - checkout
7
+ - git
8
+ - authorization
9
+ - http-extraheader
10
+ - credentials
11
+ - 400
12
+ - duplicate-header
13
+ patterns:
14
+ - regex: 'Duplicate header.*Authorization|remote.*Duplicate header.*Authorization'
15
+ flags: 'i'
16
+ - regex: 'fatal.*unable to access.*The requested URL returned error: 400'
17
+ flags: 'i'
18
+ - regex: 'http\.extraheader.*AUTHORIZATION.*duplicate|duplicate.*AUTHORIZATION.*extraheader'
19
+ flags: 'i'
20
+ error_messages:
21
+ - "remote: Duplicate header: \"Authorization\""
22
+ - "fatal: unable to access 'https://github.com/org/repo/': The requested URL returned error: 400"
23
+ - "Error: The process '/usr/bin/git' failed with exit code 128"
24
+ root_cause: |
25
+ When `actions/checkout` runs, it configures git credentials by setting an
26
+ `http.extraheader` entry containing an `AUTHORIZATION: bearer <token>` header.
27
+ This header is added to git's global or repository-level config so that all
28
+ subsequent git operations over HTTPS are authenticated.
29
+
30
+ The "Duplicate header: Authorization" error occurs when a second Authorization
31
+ header is injected on top of the one already set by checkout. This can happen in
32
+ two scenarios:
33
+
34
+ 1. **Pin to @main or an unstable tag**: Using `actions/checkout@main` (or any
35
+ edge/pre-release revision) picks up unreleased changes that may change the
36
+ credential injection mechanism. In some checkout versions, the http.extraheader
37
+ is written in a way that stacks with git's built-in credential manager, sending
38
+ two conflicting Authorization headers in the same HTTP request.
39
+
40
+ 2. **Multiple checkout calls with persist-credentials: true** (the default):
41
+ The first checkout sets the global http.extraheader. A second checkout step
42
+ (e.g., checking out a second repository) may add a new header without first
43
+ removing the existing one, depending on the git version and checkout version.
44
+
45
+ GitHub's servers reject HTTP requests with two Authorization headers with HTTP 400,
46
+ returning "Duplicate header: Authorization" in the response. Git then reports
47
+ `fatal: unable to access ... The requested URL returned error: 400`.
48
+
49
+ The bug was reported in checkout#2299 (Nov 2025, 10 reactions) and checkout#2215
50
+ (Jul 2025, 8 reactions) and remained open as of June 2026.
51
+ fix: |
52
+ Option 1 — Pin to a stable released version tag instead of @main:
53
+ Replace `actions/checkout@main` with a specific release tag (e.g.,
54
+ `actions/checkout@v4` or `actions/checkout@v4.2.2`). The stable release series
55
+ has known credential injection behaviour that does not produce duplicate headers.
56
+
57
+ Option 2 — Clear http.extraheader between checkout steps:
58
+ If you must run multiple checkout steps, add a step between them to clear the
59
+ credential header before the second checkout:
60
+ ```yaml
61
+ - name: Clear git credentials before second checkout
62
+ run: git config --global --unset-all http.extraheader || true
63
+ ```
64
+
65
+ Option 3 — Use token: input only on the checkout that needs it and set
66
+ persist-credentials: false on checkouts that do not need to push:
67
+ ```yaml
68
+ - uses: actions/checkout@v4
69
+ with:
70
+ persist-credentials: false
71
+ ```
72
+ fix_code:
73
+ - language: yaml
74
+ label: "Pin to stable checkout version to avoid duplicate header bug"
75
+ code: |
76
+ - name: Checkout repository
77
+ uses: actions/checkout@v4 # Pin to stable tag, NOT @main
78
+ with:
79
+ fetch-depth: 0
80
+
81
+ - language: yaml
82
+ label: "Clear git extraheader between multiple checkout steps"
83
+ code: |
84
+ - uses: actions/checkout@v4
85
+ with:
86
+ repository: org/first-repo
87
+
88
+ - name: Clear git credentials
89
+ run: git config --global --unset-all http.extraheader || true
90
+
91
+ - uses: actions/checkout@v4
92
+ with:
93
+ repository: org/second-repo
94
+ path: second-repo
95
+ prevention:
96
+ - "Never pin actions to @main or mutable tags — always use immutable version tags (e.g., @v4 or @v4.2.2)"
97
+ - "If using multiple checkout steps, set persist-credentials: false on steps that don't require pushing"
98
+ - "Check git config --global --list | grep extraheader if unexpected 400 errors occur on git operations"
99
+ - "Upgrade to the latest stable actions/checkout release when a new version is available"
100
+ docs:
101
+ - url: "https://github.com/actions/checkout/issues/2299"
102
+ label: "checkout#2299 — Duplicate header: Authorization (Nov 2025, 10 reactions)"
103
+ - url: "https://github.com/actions/checkout/issues/2215"
104
+ label: "checkout#2215 — actions/checkout@v4 fails with Duplicate header: Authorization, 400 (Jul 2025, 8 reactions)"
105
+ - url: "https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable"
106
+ label: "GitHub Actions security hardening — credential best practices"
@@ -0,0 +1,102 @@
1
+ id: silent-failures-122
2
+ title: '`fetch-tags: false` is silently ignored when `fetch-depth: 0` — all tags are still fetched'
3
+ category: silent-failures
4
+ severity: silent-failure
5
+ tags:
6
+ - checkout
7
+ - fetch-tags
8
+ - fetch-depth
9
+ - git
10
+ - tags
11
+ - shallow-clone
12
+ - option-conflict
13
+ patterns:
14
+ - regex: 'fetch-tags.*false.*fetch-depth.*0|fetch-depth.*0.*fetch-tags.*false'
15
+ flags: 'i'
16
+ - regex: 'tags.*still.*fetched|fetching.*tags.*despite.*false'
17
+ flags: 'i'
18
+ error_messages:
19
+ - "# No error message — tags are silently fetched despite fetch-tags: false"
20
+ root_cause: |
21
+ `actions/checkout` provides two related but conflicting inputs:
22
+ - `fetch-depth: 0` — fetches ALL commits and branches (unshallow clone); this
23
+ implicitly fetches ALL tags as well because full history requires resolving all
24
+ tag references
25
+ - `fetch-tags: false` — instructs the action NOT to fetch tags
26
+
27
+ When BOTH options are used together (`fetch-depth: 0` and `fetch-tags: false`),
28
+ `fetch-tags: false` is silently ignored. The full-history fetch that `fetch-depth: 0`
29
+ triggers uses a git fetch command that includes tag references, and the action does
30
+ not apply a `--no-tags` flag in this code path.
31
+
32
+ As a result, all repository tags end up in the local clone even though the workflow
33
+ explicitly requested `fetch-tags: false`. There is no error, warning, or annotation
34
+ — the tags are simply present.
35
+
36
+ This is a code-path gap in actions/checkout rather than a documented design decision.
37
+ The issue was reported in checkout#2195 (Jun 2025, 10 reactions) and remained open
38
+ as of June 2026.
39
+
40
+ Common situations where this matters:
41
+ - Workflows that use `git describe` and want to avoid picking up pre-release or
42
+ unrelated tags from the full history
43
+ - Versioning scripts that filter by tag presence to determine release status
44
+ - Workflows that check `git tag -l` to decide whether to create a new tag
45
+ fix: |
46
+ Since `fetch-tags: false` is not honoured with `fetch-depth: 0`, the workaround is
47
+ to explicitly delete the fetched tags in a step immediately after checkout:
48
+
49
+ ```yaml
50
+ - uses: actions/checkout@v4
51
+ with:
52
+ fetch-depth: 0
53
+ fetch-tags: false # Has no effect — tags are fetched anyway
54
+
55
+ - name: Remove all fetched tags (workaround for fetch-depth:0 + fetch-tags:false bug)
56
+ run: git tag -d $(git tag -l) || true
57
+ ```
58
+
59
+ Alternatively, if the goal is to avoid tag resolution during git operations, use
60
+ `--no-tags` in subsequent git fetch calls:
61
+ ```yaml
62
+ - run: git fetch --no-tags origin
63
+ ```
64
+
65
+ If the full commit history is needed but not all tags, also consider filtering
66
+ the specific tags needed using `git fetch origin refs/tags/<specific-tag>:refs/tags/<specific-tag>`
67
+ after deleting the unwanted ones.
68
+ fix_code:
69
+ - language: yaml
70
+ label: "Delete all fetched tags after checkout when fetch-tags: false is needed with full history"
71
+ code: |
72
+ - uses: actions/checkout@v4
73
+ with:
74
+ fetch-depth: 0
75
+ fetch-tags: false # NOTE: currently ignored with fetch-depth: 0
76
+
77
+ - name: Delete all tags (workaround — fetch-tags:false ignored with fetch-depth:0)
78
+ run: |
79
+ TAGS=$(git tag -l)
80
+ if [ -n "$TAGS" ]; then
81
+ git tag -d $TAGS
82
+ fi
83
+
84
+ - language: yaml
85
+ label: "Fetch full history via explicit git command with --no-tags as an alternative"
86
+ code: |
87
+ - uses: actions/checkout@v4
88
+ with:
89
+ fetch-depth: 1 # Shallow initial checkout
90
+
91
+ - name: Fetch full history without tags
92
+ run: git fetch --unshallow --no-tags
93
+ prevention:
94
+ - "Do not rely on fetch-tags: false to suppress tag fetching when fetch-depth: 0 is also set — it has no effect"
95
+ - "If tag presence affects workflow logic, explicitly verify the tag state with git tag -l after checkout"
96
+ - "Track checkout#2195 for a fix in future actions/checkout releases"
97
+ - "As a workaround, delete all tags after checkout using: git tag -d $(git tag -l) || true"
98
+ docs:
99
+ - url: "https://github.com/actions/checkout/issues/2195"
100
+ label: "checkout#2195 — fetch-tags: false still fetches tags if fetch-depth is 0 (Jun 2025, 10 reactions)"
101
+ - url: "https://github.com/actions/checkout#usage"
102
+ label: "actions/checkout Usage — fetch-depth and fetch-tags inputs"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@htekdev/actions-debugger",
3
- "version": "1.0.133",
3
+ "version": "1.0.134",
4
4
  "description": "65+ real GitHub Actions errors, queryable by agents. CLI + MCP server + Copilot skills + error database.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",