You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Dockerfile RUN curl -fsSL https://leanctx.com/install.sh | sh step (Dockerfile:135) is failing with HTTP 403 in CI because the leanctx.com install script fetches the latest lean-ctx release from https://api.github.com/repos/yvgude/lean-ctx/releases/latestwithout authentication, and the GitHub API is returning 403 to anonymous clients (rate limit or policy change).
This blocks all CI runs on PRs that touch the Dockerfile, including the automated dependency-update PR #44.
Run #28910144775 — failure at Build Image → Build image (Dockerfile:135)
Failing step log:
#19 [13/30] RUN curl -fsSL https://leanctx.com/install.sh | sh
#19 0.928 lean-ctx installer
#19 0.928 Mode: download pre-built binary
#19 0.928 Platform: x86_64-unknown-linux-gnu
#19 0.928 Fetching latest release...
#19 1.037 curl: (22) The requested URL returned error: 403
#19 1.039 Error: could not determine latest release.
ERROR: process "/bin/sh -c curl -fsSL https://leanctx.com/install.sh | sh" did not complete successfully: exit code: 1
Installer source (line referencing the API call):
REPO="yvgude/lean-ctx"
...
latest="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest"\```## Impact- **CI for any PR touching the Dockerfile is now red.** Latest successful `main` CI: 2026-07-07 03:49 UTC. Every run since has hit this 403.- PR #44 (`chore: update Dockerfile pinned versions`) is held and cannot be auto-merged even though its content is purely version bumps — see [PR #44 comment](https://github.com/tryweb/ai-engkit/pull/44#issuecomment-4910707037).- Dependency-update workflow's local test (which runs in a different network context) does **not** catch this; the failure only appears in the GitHub Actions runner.## Suggested Fixes (any one is acceptable)### Option A — Pin lean-ctx to a specific release (preferred, smallest blast radius)Replace the unversioned installer call with an explicit tag and a sha256-verified asset URL:```dockerfileARG LEANCTX_VERSION=v3.9.2RUN set -eux; \ curl -fsSL -o /tmp/lean-ctx.tar.gz \ "https://github.com/yvgude/lean-ctx/releases/download/${LEANCTX_VERSION}/lean-ctx-x86_64-unknown-linux-gnu.tar.gz" \ && tar -xzf /tmp/lean-ctx.tar.gz -C /usr/local/bin/ \ && rm /tmp/lean-ctx.tar.gz
Pros: deterministic builds, no API call, immune to rate limits. Cons: deviates from upstream's install.sh contract; we own the upgrade.
Option B — Pass a GITHUB_TOKEN build-arg into the installer
ARG GITHUB_TOKEN
RUN curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://leanctx.com/install.sh | sh -s -- --download
But the upstream installer doesn't accept auth headers for its internal api.github.com call — this likely requires an upstream patch.
Option C — Use actions/checkout of the lean-ctx repo at a pinned tag
Pre-clone yvgude/lean-ctx into the image at a specific tag and run its installer locally:
ARG LEANCTX_VERSION=v3.9.2
ADD https://github.com/yvgude/lean-ctx/archive/refs/tags/${LEANCTX_VERSION}.tar.gz /tmp/lean-ctx.tar.gz
RUN tar -xzf /tmp/lean-ctx.tar.gz -C /tmp/ && bash /tmp/lean-ctx-${LEANCTX_VERSION#v}/install.sh
Pros: no API call to api.github.com, deterministic. Cons: larger intermediate image layer.
Recommended Action
Pick one of the options above and open a follow-up PR.
Re-run the dependency-update workflow (or wait for the next scheduled run) to re-dispatch CI.
Summary
The Dockerfile
RUN curl -fsSL https://leanctx.com/install.sh | shstep (Dockerfile:135) is failing with HTTP 403 in CI because theleanctx.cominstall script fetches the latest lean-ctx release fromhttps://api.github.com/repos/yvgude/lean-ctx/releases/latestwithout authentication, and the GitHub API is returning 403 to anonymous clients (rate limit or policy change).This blocks all CI runs on PRs that touch the Dockerfile, including the automated dependency-update PR #44.
Evidence
CI run on PR #44 (workflow_dispatch):
Build Image→Build image(Dockerfile:135)Failing step log:
Installer source (line referencing the API call):
Pros: deterministic builds, no API call, immune to rate limits.
Cons: deviates from upstream's install.sh contract; we own the upgrade.
Option B — Pass a
GITHUB_TOKENbuild-arg into the installerBut the upstream installer doesn't accept auth headers for its internal
api.github.comcall — this likely requires an upstream patch.Option C — Use
actions/checkoutof the lean-ctx repo at a pinned tagPre-clone
yvgude/lean-ctxinto the image at a specific tag and run its installer locally:Pros: no API call to
api.github.com, deterministic.Cons: larger intermediate image layer.
Recommended Action
Related
Auto-filed by the PR triage bot — not auto-merging any dependency PR while CI is red.