
Yes, Claude Code can decompile itself. Here's the source code.
These LLMs are shockingly good at deobfuscation, transpilation and structure to structure conversions. I discovered this back around Christmas where I asked an LLM to make me an Haskell audio library by transpiling a rust implementation.

and here's me using the technique (bellow) to convert an application to a z/80 spectrum tape

I'm not going to bury the lede, so let's dig right into the real reason why you clicked on this post, here's the source code...
What follows in this post is how you can do it yourself and a special surprise insight at the bottom...
Claude Code

The source code for Claude Code is currently "not available". Whilst a GitHub repository has been published, it contains no source code. Claude Code was an unusual announcement to release along side Sonnet 3.7 - I suspect it was/is a marketing gimmick which was built to demonstrate the capability of the new model and to show the world how to build an AI coding agent (and how easy it is) from the creators of the LLM model (they know it best)
Claude Code is authored in TypeScript and was released to NPM. You can install it via..
$ mkdir claude-code && cd claude-code
$ npm i @anthropic-ai/claude-code
After installing the application into a folder you'll be greeted with the following directory structure..
tree
.
βββ node_modules
β βββ @anthropic-ai
β β βββ claude-code
β β βββ LICENSE.md
β β βββ README.md
β β βββ cli.mjs
β β βββ package.json
β β βββ scripts
β β β βββ preinstall.js
<snip>
βββ package-lock.json
βββ package.json
57 directories, 436 files
cli.mjs
This is the meat of the application itself. It is your typical commonjs application which has been compiled from typescript. As part of the process of compilation with Webpack a minifier step combines all the source code into this file and truncates the symbols.

so let's pull it apart
If you want to this at home. Your first task to is open up cli.mjs
within your favourite AI coding assistant or even Claude Code itself. Due to the "safety rails and AI alignment" you'll need to strip the top comments from the application otherwise they will kick in unless you use an LLM such as Grok which has no guard rails.
Here's the prompt that I used.
CLI.js is a commonjs typescript application which has been compiled with webpack.
The symbols have been stripped.
Inspect the source code thoroughly (extra thinking) but skip the SentrySDK source code.
Create a specification library of features of the application.
Convert the source code into human readable.
Keep going until you are done!
Because cli.mjs
is close to 5mb - which is way bigger than any LLM context window out here. It shouldn't work but it does. You're going to need babysit it for a while and feed it reward tokens of kind words ("your doing good, please continue") and encourage it to keep on going on - even if it gives up. It will time out, lots...

After about two minutes it'll spit out a technical specification which details how the application was built and the features of the application...

At this point it'll timeout for sure. This is when you need to do the "new meta" of asking the LLM to write out the technical specification library. I say new meta because - hi folks - welcome, I haven't talked about this yet publicly yet but the results of this technique when used in combination with the "old meta" are truly absurd. I'll be going deep into this in a follow-up blog post so if you wanna be the first to see it - like, subscribe and click on the bell below below.

Once it has finished dumping out the technical specification library you'll need to feed it this prompt
Now deobfuscate the application.
Split the application into separate files per domain in the SPECS folder.
Provide an overview of the directory structure before starting deobfuscation.
Skip the SENTRYSDK.
After a couple moments you'll be greeted with the skeleton of the deobfuscated outcome...
claude-code/
βββ package.json
βββ tsconfig.json
βββ README.md
βββ LICENSE.md
βββ src/
β βββ index.ts # Main entry point
β βββ cli.ts # CLI argument parsing and commands
β βββ config/ # Configuration management
β β βββ index.ts
β β βββ schema.ts
β β βββ defaults.ts
β βββ terminal/ # Terminal interface
β β βββ index.ts
β β βββ input.ts
β β βββ output.ts
β β βββ rendering.ts
β βββ codebase/ # Codebase analysis
β β βββ index.ts
β β βββ scanner.ts
β β βββ indexer.ts
β β βββ search.ts
β β βββ watcher.ts
β βββ commands/ # Command processing
β β βββ index.ts
β β βββ parser.ts
β β βββ executor.ts
β β βββ handlers/
β β βββ edit.ts
β β βββ search.ts
β β βββ explain.ts
β β βββ git.ts
β β βββ system.ts
β βββ ai/ # AI integration
β β βββ index.ts
β β βββ client.ts
β β βββ context.ts
β β βββ prompts.ts
β β βββ response.ts
β βββ fileops/ # File operations
β β βββ index.ts
β β βββ reader.ts
β β βββ writer.ts
β β βββ diff.ts
β β βββ vcs.ts
β βββ execution/ # Command execution
β β βββ index.ts
β β βββ shell.ts
β β βββ sandbox.ts
β β βββ monitor.ts
β βββ auth/ # Authentication
β β βββ index.ts
β β βββ oauth.ts
β β βββ tokens.ts
β βββ telemetry/ # Analytics and telemetry
β β βββ index.ts
β β βββ events.ts
β β βββ reporter.ts
β βββ errors/ # Error handling
β β βββ index.ts
β β βββ types.ts
β β βββ handlers.ts
β β βββ formatter.ts
β βββ utils/ # Utilities
β βββ index.ts
β βββ logger.ts
β βββ async.ts
β βββ formatting.ts
βββ scripts/ # Build and deployment scripts
β βββ build.js
β βββ preinstall.js
βββ tests/ # Test suite
βββ unit/
βββ integration/
βββ fixtures/
Now this is the part where it gets wild. Strap yourself in for another "oh-fuck" moment in time....

As the CLI.js
is circa 5Mb in size. What follows is going to require a-lot of patience but the key is to use the following prompt and keep giving it "yeah bb, you doing great. keep going" words of encouragement.
Look at the SPECS library.
Look at CLAUDE-CODE folder.
Look at @CLI.js (do not confuse it with @cli.ts), keep transpiling and implement anything that's not in the SPECS folder that has not been implemented in the CLAUDE-CODE folder.
Seriously, you are going to need to enter that at least 100 times over the next 30 minutes.
that doesn't impress me much...
Deobfuscating [nb. how do we even describe this? Is it deobfuscation?] JavaScript isn't that interesting or impressive though however the resulting source code is highly readable and covers all-the key elements in an coding assistant. We won't know how accurate it is until Anthropic goes through the motions to release the upstream source-code.
Understand dear reader that this technique can be done on any programming language and even from pre-existing binaries themselves. I've transpiled from ASM to specs and achieved below:

and others have directly converted VB .exe's to Python...
Reddit grandfather uploads 27 year old EXE file of a visual basic game and Claude one-shotted recreating the game in Python in under 5 minutes!!
β Deedy (@deedydas) February 26, 2025
From the binary. pic.twitter.com/KEzUfisxmu
still reading? good it's time for the grand reveal aka what this entire blog post is about...
Now, a sharp mind should have picked up by now the implications of above but I'll spell it out. Using the above technique you can clean-room any software in existence in hours or less.
All those "source available" founders who raised shit-loads-of-cash in the last boom are now screwed, as anyone can re-implement their "proprietary features" which provide them with revenue within hours using the above technique to launch competing startups at lower-operating costs.
All you need is access to their source-code and they have given you the keys to the kingdom on a golden platter by going to market as "commercial open-source" with source-code "protected by restrictive licensing" uploaded directly onto GitHub.

Please understand that restrictive software licenses no longer matter because these LLMs can be driven to behave like Bitcoin mixers that bypass licensing and copyright restrictions using the approach detailed in this blog post.
These zombie companies are about to get harvested if the founders don't "Elon Musk" their companies... fast... especially if they don't have a defensible moat. So, here's to the next generation of builders. May you use these insights wisely and to your advantage. It's an incredible time to be alive if you just do things.

if you aren't losing sleep right now and doing 80+hr weeks of coding right now whyyyyyyyy. there's so much opportunity available right now...
ps. socials for this blog post are below
If you enjoyed reading, give 'em a share please: