I am only getting metadata.json after downloading an exercise

Hi, at first I tried downloading the exercise via commandline with the exercism utility. But each time I did it, I was getting an empty directory. Not even tests were there! No error message or anything. In the end, I solved it using the in-browser editor. I had no such problem with any other exercise.

If the files for solving locally are not prepared yet for some reason, the utility should print some kind of warning.

I use Debian Linux 13 (Trixie).

Dark forces at work! The same problem is happening with Collatz Conqjecture.

It’s not limited to Python. I just tried downloading the leap exercise for jq. Same effect. It says it downloaded the exercise, but the resulting folder is empty (although it has hidden .exercism/metadata.json)

Hi,

I am having an issue with downloading JavaScript exercises using the Exercism CLI.

My CLI setup worked previously. Existing JavaScript exercises that I downloaded a few months ago are complete and contain all expected files (README.md, .js files, tests, package.json, etc.).

However, newly downloaded exercises only create the exercise folder with .exercism/metadata.json. No actual exercise files are downloaded.

Example:

Command:

exercism download --track=javascript --exercise=two-fer

Output:

Downloaded to
/home/user/exercism/javascript/two-fer

Contents:

two-fer/
└── .exercism/
    └── metadata.json

I tested this with multiple JavaScript exercises (for example two-fer and recycling-robot) and the result is always the same.

Troubleshooting already performed:

  • Updated/reinstalled configuration
  • Generated a new API token
  • Reconfigured the CLI
  • Tested with --force
  • Ran exercism troubleshoot

System information:

  • OS: Xubuntu Linux
  • Architecture: amd64
  • Exercism CLI version: 3.5.8

exercism troubleshoot shows:

  • GitHub API: connected
  • Exercism API: connected

Older JavaScript exercises in the same workspace still work correctly, but new downloads only contain metadata.

Any ideas what could cause this?

Thanks!

2 Likes

I encountered same issue today

1 Like

Hi! Ive been using exercism for some time now. Today Ive noticed when I want to download an exercise, Im only downloading metadata.json. It did work for me problerly before, for some reason it stopped now. Any idea?

2 Likes

I’m getting the same in Python and jq. It’s not just you.

If you really, really want to solve a problem right now - web editor still works.

2 Likes

Good to know it’s not my local problem! Thanks!

Running with the -v flag, we see the file downloads fail with error 403.

$ command exercism download -t bash -e say -v --force

========================= BEGIN DumpRequest =========================
GET /v1/solutions/latest?exercise_id=say&track_id=bash HTTP/1.1
Host: api.exercism.org
Authorization: Bearer 69e5*****************************e68
Content-Type: application/json
User-Agent: github.com/exercism/cli v3.5.8 (linux/amd64)


========================= END DumpRequest =========================


========================= BEGIN DumpResponse =========================
HTTP/2.0 200 OK
...
========================= END DumpResponse =========================


========================= BEGIN DumpRequest =========================
GET /api/v1/solutions/3b3a19ab661844a8b628b1305aabca16/files/.exercism/config.json HTTP/1.1
Host: exercism.org
Authorization: Bearer 69e5*****************************e68
Content-Type: application/json
User-Agent: github.com/exercism/cli v3.5.8 (linux/amd64)


========================= END DumpRequest =========================


========================= BEGIN DumpResponse =========================
HTTP/2.0 403 Forbidden
Accept-Ch: Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA
Cf-Mitigated: challenge
Cf-Ray: a26e2903cd40a220-YYZ
Content-Security-Policy: default-src 'none'; script-src 'nonce-EFvb9ot3wF4uaxhBFjNt01' 'unsafe-eval' https://challenges.cloudflare.com; script-src-attr 'none'; style-src 'unsafe-inline'; img-src 'self' https://challenges.cloudflare.com; connect-src 'self' https://challenges.cloudflare.com; frame-src 'self' https://challenges.cloudflare.com blob:; child-src 'self' https://challenges.cloudflare.com blob:; worker-src blob:; form-action http: https:; base-uri 'self'
Content-Type: text/html; charset=UTF-8
Critical-Ch: Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Thu, 06 Aug 2026 12:49:12 GMT
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Origin-Agent-Cluster: ?1
Permissions-Policy: accelerometer=(),camera=(),clipboard-read=(),clipboard-write=(),geolocation=(),gyroscope=(),hid=(),magnetometer=(),microphone=(),payment=(),publickey-credentials-get=(),screen-wake-lock=(),serial=(),sync-xhr=(),usb=(),xr-spatial-tracking=*
Referrer-Policy: same-origin
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=HA%2FGZD%2BRpjNDQlfgPWpbBiTAyDCa3ktnnpFW5G2ghVyJoK623J4sD52rrLsPXdkd7DnC3FeobgxfIKDUzknBNx9YHHV4jICVd%2FCVEnr4ScM8N0s%2FGuL635QhNFqUJw%3D%3D"}]}
Server: cloudflare
Server-Timing: chlray;desc="a26e2903cd40a220"
Vary: accept-encoding
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN


========================= END DumpResponse =========================

and the same for every other file that’s supposed to be downloaded

1 Like

Exercism is currently under a bot attack that is affecting things negatively.

1 Like

Exercism is currently experiencing a bot attack and is on lockdown. That’s likely triggering this issue.

3 Likes

Exercism is currently experiencing a bot attack and is on lockdown. That’s likely triggering this issue.

1 Like

Thank you @IsaacG for your answer. I was angry because I don’t understand what happend! :rofl: I connect and disconnect my vpn, try to another env. But now I can stay relax. I’m taking the Java path

Keep calm and carry on.

You should be able to solve it via the Web UI for now.

Describe the bug
When running exercism download --track=cpp --exercise=freelancer-rates, the CLI only generates the local .exercism/metadata.json file. It fails to pull the actual files (README.md, .cpp files, etc.).

Root Cause Analysis
I did some digging in this repository to figure out why, and I am confident this is an Exercism API / Platform Sync failure, not a repo configuration issue:

  1. log-levels downloads perfectly. Its .meta/config.json and directory structure is identical to freelancer-rates (omitting CMakeLists/headers from the config array).
  2. freelancer-rates is correctly registered in the root config.json with the correct UUID and prerequisites.
  3. Because the repo configuration is completely valid but the CLI is receiving an empty payload, it appears the platform database is out of sync with this repository.
  4. Note: A bot ran 🤖 Auto-sync docs, metadata, and filepaths (#1021) in the exercises directory about 5 hours ago. It’s highly likely this sync caused a regression on the backend specifically for freelancer-rates.

To Reproduce

  1. Unlock and start freelancer-rates on the web interface.
  2. Run exercism download --track=cpp --exercise=freelancer-rates
  3. Observe that the directory is completely empty except for the .exercism/metadata.json file.

This is a known issue. Most likely related to an ongoing bot attack on exercism.org.

Yes, that seems to have been the cause. I tried downloading the exercise again, and it worked this time.

Thanks yall so much for taking the time to help me!

This should now be working. You may need to add --force to the command.

1 Like