How it works
What it can’t see
slowship reads code; it never runs it. That’s what makes it safe, and it’s also its limit. Here is everything it knows it can miss.
No findings is not proof of nothing. The report says so too, and lists these blind spots for every watch.
#Code that only exists while running
Code fetched or built while a program runs is invisible to a reader. slowship reports the capability, like downloads and runs code, but it can’t see the payload.
#Compiled code
Compiled code isn’t decompiled. With REA, Go and Rust files are read as far as their build record: what they were built from, not what they do. .NET is read further, method by method, unless an assembly is too big for REA’s member reader (PowerShell’s 13 MB engine is). C and C++ leave no record, so those are only named.
#Big Electron apps
REA’s map of an Electron app is slow on very big builds: on VS Code’s 6,187 files it got through 156 in 13 minutes. slowship gives it 5 minutes and says so when it gives up. A packaged app gets its fuses read, but its app.asar isn’t mapped; point --app at the unpacked build for the IPC map.
In your build, only IPC handlers written inline are searched for what they do. A handler that hands off to a function elsewhere isn’t followed.
#Languages it reads lightly, or not yet
- Python and shell inside skills are read line by line, not with a full parser. Treat quiet there as “nothing obvious”.
- TypeScript isn’t read yet.
- Code inside markdown code blocks is read as instructions, not as code.
#Prompt injection
Instructions in SKILL.md are checked for four narrow things: hiding something from you, ignoring other instructions, downloading and running a script, and sending your data somewhere. Other prompt injection passes unnoticed. On the malware benchmark, attacks written as plain English were the biggest single group of misses.
#Big files
Files over 2 MB, usually generated bundles, are skipped and named in the report.