Error Message and Logs
Telegram notification (received repeatedly over 2 consecutive days):
CheckHelperImageJob failed with: HTTP request returned status code 403:
...(truncated HTML page, not JSON)
This is notable because it's not the usual cURL timeout/DNS errors reported in
other issues (e.g. #6298) — the job receives a full HTML page with HTTP 403,
suggesting a WAF/challenge response rather than a network connectivity failure.
Steps to Reproduce
- Self-hosted Coolify instance with Telegram notifications enabled for job failures.
- Wait for the scheduled CheckHelperImageJob run (checks https://cdn.coollabs.io/coolify/versions.json).
- Job fails with HTTP 403 and an HTML response body instead of JSON.
- From the same server, run: curl -v https://cdn.coollabs.io/coolify/versions.json
→ returns HTTP 200 with valid JSON immediately, no blocking, no rate limiting.
Example Repository URL
No response
Coolify Version
v4.1.2
Are you using Coolify Cloud?
No (self-hosted)
Operating System and Version (self-hosted)
Ubuntu 25.10
Additional Information
Manual verification that outbound connectivity from the server is healthy:
$ curl -v https://cdn.coollabs.io/coolify/versions.json
< HTTP/2 200
< content-type: application/json
< server: cloudflare
{ "coolify": { "v4": {...}, "helper": {"version": "1.0.14"}, ... } }
Since a plain curl succeeds instantly from the same host, this rules out
firewall/DNS/proxy issues on my side. Looking at app/Jobs/CheckHelperImageJob.php,
the request is made via Http::retry(3, 1000)->get(...) — Laravel's default
Guzzle client, with no custom User-Agent header. cdn.coollabs.io is served via
Cloudflare, and it's a known pattern for Cloudflare's bot protection / WAF to
intermittently challenge generic HTTP client signatures (default Guzzle UA)
while allowing curl through. This might explain the intermittent 403 + HTML
challenge page seen here, distinct from the timeout/DNS issues in other reports.
Suggested fix: set an explicit User-Agent header (e.g. "Coolify/{version}") on
this HTTP call, which is a common workaround for Cloudflare bot-protection
false positives.

Error Message and Logs
Telegram notification (received repeatedly over 2 consecutive days):
CheckHelperImageJob failed with: HTTP request returned status code 403:
...(truncated HTML page, not JSON)
This is notable because it's not the usual cURL timeout/DNS errors reported in
other issues (e.g. #6298) — the job receives a full HTML page with HTTP 403,
suggesting a WAF/challenge response rather than a network connectivity failure.
Steps to Reproduce
→ returns HTTP 200 with valid JSON immediately, no blocking, no rate limiting.
Example Repository URL
No response
Coolify Version
v4.1.2
Are you using Coolify Cloud?
No (self-hosted)
Operating System and Version (self-hosted)
Ubuntu 25.10
Additional Information
Manual verification that outbound connectivity from the server is healthy:
$ curl -v https://cdn.coollabs.io/coolify/versions.json
< HTTP/2 200
< content-type: application/json
< server: cloudflare
{ "coolify": { "v4": {...}, "helper": {"version": "1.0.14"}, ... } }
Since a plain curl succeeds instantly from the same host, this rules out
firewall/DNS/proxy issues on my side. Looking at app/Jobs/CheckHelperImageJob.php,
the request is made via
Http::retry(3, 1000)->get(...)— Laravel's defaultGuzzle client, with no custom User-Agent header. cdn.coollabs.io is served via
Cloudflare, and it's a known pattern for Cloudflare's bot protection / WAF to
intermittently challenge generic HTTP client signatures (default Guzzle UA)
while allowing curl through. This might explain the intermittent 403 + HTML
challenge page seen here, distinct from the timeout/DNS issues in other reports.
Suggested fix: set an explicit User-Agent header (e.g. "Coolify/{version}") on
this HTTP call, which is a common workaround for Cloudflare bot-protection
false positives.