NIKKE PC launcher compromise (Nov 2026): Level Infinite CDN files modified, remote-control agent, indicators
NIKKE PC launcher compromise (November 2026)
Caution
From 2026-09-27, three official JavaScript files on Level Infinite's CDN contained attacker code. The NIKKE PC launcher loads these files. From Nov 1 at the latest, opening the launcher could install a remote-control agent: while the launcher was open, the attacker could run any command on your machine, read any file and take screenshots.
Update, 2026-11-03 19:10 GMT: Level Infinite replaced two of the files at 17:04 and 17:21 GMT. The third, FeedList.feb647c9.js, was cleaned at the origin on Oct 28, but two CDN servers still delivered the modified copy at 18:59 GMT. The attacker's server no longer answered at 18:31 GMT. None of this undoes anything on machines that were already infected, and the old files may still be in your launcher's cache. Do not open the NIKKE PC launcher until Level Infinite confirms the fix, and clear its cache before you do.
This report comes from one infected machine, plus findings from other victims posted in the comments. The payload was analyzed statically and never executed. Everything below was checked against the downloaded files, the launcher's logs and caches, the decompiled payload and the live servers. Findings from the comments are marked as reported when they could not be checked here.
Last updated: 2026-11-03, 19:10 GMT. Corrections in this update: a third modified file, FeedList.feb647c9.js (found by RichyRich515 and Enerccio in the comments, confirmed here); the payload was served from Nov 1 at the latest, not Nov 2-3; debug.log is appended to, not overwritten on each launch; collect_cookies: false does not mean cookies were safe. Earlier corrections: the PlatformExperienceHelper folder itself is normal Chrome (only a 64-hex subfolder with the DLL is malicious), and onominan.tmp is not a malware marker.
Contents
Summary
| Entry point | Three official files on Level Infinite's CDN (playerinfinite.com, Tencent COS), modified on 2026-09-27 |
| Status | aegis-fix.min.js and images.7fec4c32.js replaced by Level Infinite on Nov 3 at 17:04 and 17:21 GMT. FeedList.feb647c9.js clean at the origin since Oct 28, but still modified on two CDN servers at 18:59 GMT |
| Still open | How the attacker got write access to the CDN; the CDN servers that still deliver the modified FeedList.feb647c9.js; old files in launcher caches; no official statement yet |
| Who is at risk | Anyone who opened the NIKKE PC launcher from Nov 1 (at the latest) until the fix, on Windows or on Linux / Steam Deck through Proton, and anyone whose launcher still uses the modified files from its cache or from a stale CDN server |
| Payload active since | Nov 1, 2026 at the latest, and only on some launches. The earliest agent start reported in the comments is Nov 1 at 19:37 GMT. The loader has been in place since Sep 27 |
| What it is | A remote-control agent: command execution, file access, screenshots, theft of passwords, browser cookies, tokens, SSH keys and crypto wallets |
| Persistence | On Windows, a DLL hijack inside Chrome that keeps running after the launcher is closed |
Check if you are infected
- Open your NIKKE install folder.
- Open
Launcher/intl_service/debug.login a text editor. - Search for
k2f_chan.
If you find it, the agent ran on your machine. An infected log looks like this:
"lua downloaded to log\tinyget\tinyget..log"
"k2f_chan registered"
"adopted "
"agent started as "
Launcher/log/tinyget/tinyget.*.log also records the download of https://analytics.insightjs.com/comm/assets/insight.bundle.
The launcher appends to debug.log: on the analyzed machine it held all 9 launches from Oct 29 to Nov 3. It is gone if the NIKKE folder was deleted or reinstalled. FETCH_LIST suc success lines come from the normal FeedList module and appear on clean launches too, so they are not a sign.
The agent also saves its state in the launcher's Local Storage, outside the NIKKE folder: search the files in %APPDATA%\nikke_launcher\tbs_cache\Local Storage\leveldb\ for k2f.agent. On Windows, also check for the persistence files listed in .
What to do
Everyone
- Do not open the NIKKE PC launcher until Level Infinite confirms the fix.
- Before you open it again, delete the launcher's cache folder
%APPDATA%\nikke_launcher\tbs_cache(inside your prefix on Proton). It may still hold the modified files from before the fix. - Block these in your hosts file, router or firewall:
This only stops the current server. How the attacker got write access to Level Infinite's CDN is not known yet, so they may be able to try again with a new domain.insightjs.com analytics.insightjs.com insightjs.org 89.127.233.127
If you are infected
- Close the launcher, or disconnect from the internet, so the attacker loses access.
- On Windows, remove the persistence:
- Open
%LOCALAPPDATA%\Google\Chrome\User Data\PlatformExperienceHelper\. Delete any subfolder whose name is a 64-character hex string and that holdsplatform_experience_helper.dll. Do not delete the whole folder: Chrome createsPlatformExperienceHelperitself for its ownplatform_experience_helper.exe, so the folder on its own is normal. - Delete
HKCU\Software\Classes\CLSID\{E77CC89B-7401-4C04-8CED-149DB35ADD04}if it exists. The same CLSID also exists under HKLM on every Windows install, pointing towpc.dll(WindowsParentalControls). Leave that one. Only the HKCU copy is malicious. - Reinstalling Windows is the safest option, because the attacker could run any command while the agent was active.
- Open
- From a clean device, change your passwords: NIKKE / Level Infinite first, then email, Discord, banking and every password saved in a browser. Turn on two-factor authentication.
- Log out of all sessions (Discord, Google, Steam, GitHub and others). The agent can steal browser cookies, which work without your password.
- Revoke and regenerate API tokens, SSH keys and any developer credentials (GitHub, npm, AWS, OpenAI, Anthropic and others).
- Move crypto wallet funds to a new wallet with a new seed phrase.
What the attacker can do on an infected machine
The agent is a remote-access tool controlled by the operator. It does not only run a fixed stealing routine. While the launcher is open, the operator can send these commands:
| Command | Effect |
|---|---|
exec | Runs any program or shell command and returns the output |
ls, cd, cat, download, file_chunk | Browse folders and download any file |
screens | Screenshot of every monitor |
creds | Dumps Windows Credential Manager |
browserscan | Saved passwords, and cookies unless collect_cookies is false, from Chrome, Edge, Brave, Vivaldi, Opera and Firefox |
chrome_scan | Lists Chrome installs, profiles and extension IDs |
keyscan | Reads 264 known credential and config file paths and scans them for secrets |
wallet_files | Data from 28 browser crypto wallets |
whoami, sysinfo, host_facts | Computer name, user, privilege level, Windows build, CPU, RAM, drives, network adapters |
chrome_install | Installs the Chrome DLL persistence |
chrome_cleanup, chrome_uninstall, payload_cleanup | Remove traces |
exec alone means the operator can do anything your user account can do: install other malware, read any document or change files. The other commands are shortcuts.
None of these commands leaves an entry in the launcher logs. A victim cannot tell from the logs which commands were run, so assume the worst.
Linux and Steam Deck (Proton)
Proton does not protect you.
The automatic scans look for Windows paths, so they find little in a Proton prefix. On the machine analyzed here, the only target present inside the prefix was the NIKKE launcher data.
The remote commands are a different matter. Wine maps your Linux home folder and / as drive letters (Z: at least). It also passes your environment variables to the game, and the agent reads all of them. With exec, ls, cat and download, the operator can read anything your Linux user can read: ~/.ssh, browser profiles, shell config files with API keys, password stores and documents. The Windows Chrome persistence does not apply on Linux, but treat every secret in your home folder and environment as exposed.
Technical details
Stage 1: modified official files
Code was added to three files on Level Infinite's CDN:
| Official file | Loads |
|---|---|
https://sg-gpts.playerinfinite.com/comm/assets/lib/aegis-fix.min.js | https://insightjs.com/l.js?f=aegis |
https://na-webassets.playerinfinite.com/comm/nikke_launcher/assets/images.7fec4c32.js | https://insightjs.com/l.js?f=images |
https://na-webassets.playerinfinite.com/comm/nikke_launcher/assets/FeedList.feb647c9.js | https://insightjs.com/l.js?f=feedlist |
Modified versions (the first two fetched on Nov 3 before the fix, the third on Nov 3 at 18:57 GMT):
| File | Size | ETag | Last-Modified |
|---|---|---|---|
aegis-fix.min.js | 69,731 bytes | 50d1861152ea7f6875ffceb7d08445b5 | Sun, 27 Sep 2026 06:41:40 GMT |
images.7fec4c32.js | 4,358 bytes | 481e9b5ab8fb93406bf31980b53e0578 | Sun, 27 Sep 2026 06:41:57 GMT |
FeedList.feb647c9.js | 5,808 bytes | b7d842200372ad0d9a84ef4cc8511311 | Sun, 27 Sep 2026 06:42:03 GMT |
Clean versions (no loader and no reference to insightjs):
| File | Size | ETag | Last-Modified |
|---|---|---|---|
aegis-fix.min.js | 69,032 bytes | 44c576454a5b0b4ed60e1a983aa4e782 | Tue, 03 Nov 2026 17:04:28 GMT |
images.7fec4c32.js | 3,659 bytes | 6e5f79cf9b7c364249f9de83ba7fa59e | Tue, 03 Nov 2026 17:21:31 GMT |
FeedList.feb647c9.js | 5,099 bytes | 04ee9800128396ba26f10ca70f170967 | Wed, 28 Oct 2026 15:46:09 GMT |
All versions are served by tencent-cos. Which copy of FeedList.feb647c9.js a launcher gets depends on the CDN server it reaches. On Nov 3 between 18:57 and 18:59 GMT, 43.152.43.115 (the address Cloudflare and Google DNS returned to the analyzing machine) served the clean copy. 43.175.144.148 and 43.175.145.181 served the modified copy, SHA-256 2f2aac505f486067af6831d6c75ea74df63acb1ed4e4002709c5962c68bd9203, from a cache dated Sep 30, and returned it for a cache-busting query string too. images.7fec4c32.js was clean on all three servers.
The injected code hides the URL in an integer array (new TextDecoder().decode(new Uint8Array(new Uint32Array().buffer))). It adds a tag, then removes it from the page after loading. If insightjs.com fails, it retries with the TLD replaced by .org (built with String.fromCharCode(111,114,103) in FeedList.feb647c9.js). In FeedList.feb647c9.js the 708 added bytes sit just before the module's final export{...} statement, so a check that compares only the end of a file misses them.
The injected code logs startup already in progress to debug.log with an empty source, apparently when another loader has already started the agent. On the analyzed machine that line came at 01:47:35, one second before the download, with only two loaders in the cache.
The launcher's V8 code cache (tbs_cache\Code Cache\js\) stores the scripts under keys such as https://insightjs.com/l.js?f=aegis, with https://playerinfinite.com/ as origin. The analyzed machine had the aegis and images keys. Another victim reported all three, including ?f=feedlist.
Stage 2: payload download
l.js calls the launcher's own JS bridge (Srv_DownloadFile) to fetch:
| URL | https://analytics.insightjs.com/comm/assets/insight.bundle |
| Size | 205,135 bytes |
| SHA-256 | cc0ad05bfe85940a6067b3a72c182d3953339129206634141926d5d0b35973ec (copy fetched 2026-11-03 16:22 GMT) |
| Headers | content-type: application/octet-stream, cache-control: no-store, last-modified: Tue, 03 Nov 2026 14:56:40 GMT |
The server changed the file on Nov 3 at 14:56 GMT, so earlier victims may have received a different build of the same size.
The launcher saves the payload under a misleading .log name in Launcher\log\tinyget\, runs it, then deletes it.
An earlier version of this report listed a 22-byte hex file in %LOCALAPPDATA%\Temp\ (onominan.tmp) as a marker. That was wrong. The same file name with the same kind of content exists in Delta Force Wine prefixes dated 2026-09-20, before the CDN files were changed, so it comes from Tencent software and does not show infection.
Stage 3: the agent
- Format: LuaJIT 2.0 bytecode (32-bit, stripped), obfuscated with Prometheus. The strings are stored in a shuffled table with custom base64 and base85 encoding.
- Internal build name:
K2F_LUA_BUILD. - Windows access through LuaJIT FFI:
CredEnumerateW,CryptUnprotectData,NCryptDecrypt,BCrypt*,Reg*,CreateProcessW,CreatePipe,GetEnvironmentStringsW,GetLogicalDrives,GetAdaptersInfo, GDI+. - Protocol: JSON requests over
k2f_chan({op: "open", cmd: "", arg: {...}}, thenreadandwriteon a session ID). Output is returned base64-encoded in chunks of up to 2 MiB. - State: the agent stores
k2f.agent.statein the launcher's Local Storage (originhttps://www.nikkelauncher.com,tbs_cache\Local Storage\leveldb\). On the analyzed machine it heldagent_id(the same UUID as theadoptedlog line),agent_pass,c2s_counter: 4, ans2c_counterthat looks like a microsecond timestamp (2026-11-03 00:47:37 GMT), and this config:poll_interval_seconds: 1800,jitter_seconds: 360,collect_cookies: false. The agent checks in with the server every 30 minutes, give or take 6. Thes2c_countervalue, 1793666857535416, is 2026-11-03 00:47:37.535 GMT in microseconds, two seconds after the agent started. Older values of the key stay in the LevelDB.logfile until LevelDB compacts it. One victim's file showed 11 check-ins over 3 hours, withc2s_countergoing up by one each time and the server switching the interval between 600, 1800 and 900 seconds (reported in the comments). The Lua payload never reads or writes the two counters, so they are handled byl.js, and what makesc2s_countergo up could not be confirmed from code. collect_cookiesis an argument ofbrowserscan. When it is false, the cookie stores are skipped and saved passwords are read anyway.cat,downloadandexeccan still copy a browser's Cookies file, sofalsein the saved config does not mean the cookies were safe.- Modules:
base64,json,channel,dispatch,commands.*,keyscan.*,win32.chrome,win32.creds,win32.exec,win32.extensions,win32.firefox,win32.fs,win32.hook,win32.registry,win32.screens,win32.sysinfo,win32.whoami.
Files the agent reads
The full list of 264 paths, plus browser subpaths, registry keys and file patterns, is in target-paths.md in this gist. Main groups:
- SSH and remote access:
~\.ssh\*includingknown_hosts, PuTTY and WinSCP sessions in the registry, FileZillasitemanager.xmlandrecentservers.xml - GPG:
%APPDATA%\gnupg,private-keys-v1.d - AI tools:
~\.claude\.credentials.json,%APPDATA%\Claude\claude_desktop_config.json,$CODEX_HOME\auth.json, Gemini CLIoauth_creds.json, GitHub Copilot CLI, Cursor, Windsurf, VS Code (state.vscdb,mcp.json), Kimi, Qwen Code, OpenCode, Aider, Continue.dev - Cloud: AWS (
~\.aws\credentials, SSO cache), Azure, Google Cloud, Oracle Cloud, DigitalOcean, Hetzner, Linode, Alibaba, Tencent, Huawei, Fly.io, Railway, Vercel, Netlify, Cloudflare Wrangler, Supabase, Neon, PlanetScale, MongoDB Atlas, Snowflake, Databricks - Developer tools: GitHub CLI
hosts.yml, GitLab CLI, npm, pip, Poetry, Cargo, Composer, NuGet, RubyGems, Gradle, Maven, Docker and Podmanauth.json, Kubernetes, Helm, Terraform, Pulumi, Stripe, Twilio, Sentry, Hugging Face, Kaggle - Shell history: PowerShell
ConsoleHost_history.txt,~\.zsh_history, fish, psql - Project folders:
%USERPROFILE%\code,dev,source,Programming,Documents,Desktop, scanned for.env,appsettings*.json,application*.yml,docker-compose.yml,.mcp.json - NIKKE:
%APPDATA%\nikke_launcher,%APPDATA%\nikke_launcher_hmt - Environment variables: 38 variables that point to config files, such as
$CLAUDE_CONFIG_DIR,$GH_CONFIG_DIR,$AWS_SHARED_CREDENTIALS_FILE,$KUBECONFIG,$DOCKER_CONFIG - Crypto wallets: 28 browser extensions by ID, including MetaMask, Phantom, Coinbase, Binance, OKX, Bybit, Bitget, Trust, Rabby, Rainbow, Keplr, Solflare, Backpack, Tonkeeper, TronLink, Xverse, UniSat, Petra, Ronin and Magic Eden
Infrastructure
| Item | Details |
|---|---|
insightjs.com | Registered 2026-09-27 01:59 GMT through PDR Ltd. (PublicDomainRegistry), owner hidden. Name servers ns0.1984.is, ns1.1984.is, ns2.1984hosting.com. Last changed 2026-10-12 |
insightjs.com, analytics.insightjs.com | Resolve to 89.127.233.127 |
89.127.233.127 | VPS at 1984 ehf, Iceland. Network IS-1984-20060308 (89.127.232.0/22), reverse DNS vps-89-127-233-127.1984.is. Abuse contact abuse@1984.is |
insightjs.org | Fallback domain in the loader. Unregistered until Nov 3, then registered at 17:55:42 GMT through Spaceship, Inc., behind Cloudflare. It now serves a multilingual "NIKKE PC Launcher Security Alert" page, and its l.js only shows that warning inside the launcher. The page says it is an independent notice and links to this report and an NGA thread. /comm/assets/insight.bundle returns 404 there |
https://insightjs.com/l.js | On Nov 3 at 17:30 GMT it returned a different script for both ?f=aegis and ?f=images: 9,145 bytes, SHA-256 9617d04eb82ad804b55115d123fa3954711f44f318c9cf09c9b4857a24cba644. It looks like a page-speed analytics script that posts to /speed, with no download code |
insight.bundle | Still served on Nov 3 at 17:30 GMT, same SHA-256 cc0ad05b...73ec, unchanged since 14:56 GMT |
Timeline (GMT)
| Date | Event |
|---|---|
| 2026-09-27 01:59 | insightjs.com registered |
| 2026-09-27 06:41-06:42 | Three official files on Level Infinite's CDN modified |
| 2026-10-12 | insightjs.com registration updated |
| 2026-10-28 15:46 | FeedList.feb647c9.js replaced with a clean copy at the origin. Some CDN servers keep the modified copy they cached on Sep 30 |
| 2026-11-01 11:14, 11-02 17:34 | Launches on the analyzed machine: loader present, no payload served |
| 2026-11-01 19:37 | Earliest agent start reported in the comments. Other reported starts: Nov 1 21:36 and 21:57, Nov 2 23:17, Nov 3 07:06 |
| 2026-11-03 00:47 | Payload served and run on the analyzed machine |
| 2026-11-03 14:56 | Payload file replaced on the attacker's server |
| 2026-11-03 16:11 | First public warning on the NIKKE community Discord |
| 2026-11-03 16:56 | Official files still modified |
| 2026-11-03 17:04 | Level Infinite replaces aegis-fix.min.js |
| 2026-11-03 17:21 | Level Infinite replaces images.7fec4c32.js |
| 2026-11-03 17:30 | l.js on the attacker's server now returns a harmless-looking analytics script. insight.bundle is still online |
| 2026-11-03 17:55 | insightjs.org registered by a third party and turned into a warning page |
| 2026-11-03 18:31 | 89.127.233.127 no longer answers (connection timeout from the analyzing machine) |
| 2026-11-03 18:35 | Sweep of 63 official launcher files on playerinfinite.com through 43.152.43.115: no loader code. That server already had the clean FeedList.feb647c9.js, so the sweep missed it |
| 2026-11-03 18:59 | FeedList.feb647c9.js still modified on 43.175.144.148 and 43.175.145.181 |
Indicators of compromise
# Domains
insightjs.com
analytics.insightjs.com
insightjs.org
# IP
89.127.233.127
# URLs
https://insightjs.com/l.js?f=aegis
https://insightjs.com/l.js?f=images
https://insightjs.com/l.js?f=feedlist
https://analytics.insightjs.com/comm/assets/insight.bundle
# Modified official files
https://sg-gpts.playerinfinite.com/comm/assets/lib/aegis-fix.min.js
https://na-webassets.playerinfinite.com/comm/nikke_launcher/assets/images.7fec4c32.js
https://na-webassets.playerinfinite.com/comm/nikke_launcher/assets/FeedList.feb647c9.js
# Modified FeedList.feb647c9.js SHA-256
2f2aac505f486067af6831d6c75ea74df63acb1ed4e4002709c5962c68bd9203
# Payload SHA-256 (2026-11-03 16:22 GMT copy)
cc0ad05bfe85940a6067b3a72c182d3953339129206634141926d5d0b35973ec
# Log strings (Launcher/intl_service/debug.log)
startup already in progress
k2f_chan registered
adopted
resuming
agent started as
lua downloaded to log\tinyget\
# Agent state (Local Storage, survives deleting the NIKKE folder)
%APPDATA%\nikke_launcher\tbs_cache\Local Storage\leveldb\*.log containing k2f.agent.state
# Windows persistence (the PlatformExperienceHelper folder itself is normal Chrome; only the 64-hex subfolder with the DLL is malicious)
%LOCALAPPDATA%\Google\Chrome\User Data\PlatformExperienceHelper\\platform_experience_helper.dll
HKCU\Software\Classes\CLSID\{E77CC89B-7401-4C04-8CED-149DB35ADD04}\InprocServer32
# Temporary files
%TEMP%\k2f-bcreds-*
k2f_screen_*.jpg
For Level Infinite
- Three modified files on Tencent COS had
last-modifiedSep 27 2026, 06:41-06:42 GMT.aegis-fix.min.jsandimages.7fec4c32.jswere replaced on Nov 3 at 17:04 and 17:21 GMT. FeedList.feb647c9.jswas replaced at the origin on Oct 28 at 15:46 GMT, but 43.175.144.148 and 43.175.145.181 still served the Sep 27 copy on Nov 3 at 18:59 GMT, also for requests with a query string. Every CDN server needs a purge for this path, and the other paths should be checked on each server, not only on the one a given resolver returns.- Players who launched since Sep 27 may still have the modified files in
tbs_cache, so a forced cache reset in the next launcher update would help. - The attacker had write access to the CDN bucket, or to the pipeline that publishes to it. That access has to be found and closed. Otherwise a new loader with a new domain can be pushed at any time.
- Other files in the same buckets may also be modified. They should be checked against build output.
- The decompiled payload, the decoded string table and a password-protected sample are available to Level Infinite, hosting providers and security researchers on request. They are not posted here because they would give anyone a working stealer.
NIKKE launcher payload: every target path
Decoded from insight.bundle (SHA-256 cc0ad05bfe85940a6067b3a72c182d3953339129206634141926d5d0b35973ec). ~ is %USERPROFILE%. $VAR paths are only used when that environment variable is set.
Files and folders (250)
$ARGOCD_CONFIG_DIR\config
$AZURE_CONFIG_DIR\accessTokens.json
$AZURE_CONFIG_DIR\msal_token_cache.bin
$AZURE_CONFIG_DIR\service_principal_entries.bin
$CARGO_HOME\credentials.toml
$CLAUDE_CONFIG_DIR\.claude.json
$CLAUDE_CONFIG_DIR\.credentials.json
$CLAUDE_CONFIG_DIR\settings.json
$CLOUDSDK_CONFIG\access_tokens.db
$CLOUDSDK_CONFIG\application_default_credentials.json
$CLOUDSDK_CONFIG\credentials.db
$CODEX_HOME\auth.json
$CODEX_HOME\config.toml
$COMPOSER_HOME\auth.json
$COPILOT_HOME\mcp-config.json
$DOCKER_CONFIG\config.json
$DSH_HOME\.credentials.yaml
$GEMINI_CLI_HOME\.gemini\oauth_creds.json
$GEMINI_CLI_HOME\.gemini\settings.json
$GH_CONFIG_DIR\hosts.yml
$GRADLE_USER_HOME\gradle.properties
$HELM_CONFIG_HOME\repositories.yaml
$HF_HOME\stored_tokens
$HF_HOME\token
$JFROG_CLI_HOME_DIR\jfrog-cli.conf.v6
$KAGGLE_CONFIG_DIR\access_token
$KAGGLE_CONFIG_DIR\kaggle.json
$KIMI_SHARE_DIR\config.toml
$PULUMI_HOME\credentials.json
$SAKURA_PROFILE_DIR\*\config.json
$SNOWFLAKE_HOME\config.toml
$TWILIO_CONFIG_DIR\config.json
$XDG_CONFIG_HOME\configstore\firebase-tools.json
~\.aider.conf.yml
~\.aliyun\config.json
~\.anyscale\credentials.json
%APPDATA%\age\*
%APPDATA%\Anthropic\credentials\*.json
%APPDATA%\atlascli\config.toml
%APPDATA%\Buildkite CLI\bk.yaml
%APPDATA%\Claude\claude_desktop_config.json
%APPDATA%\cloudsmith\credentials.ini
%APPDATA%\Code - Insiders\User\globalStorage\state.vscdb
%APPDATA%\Code - Insiders\User\settings.json
%APPDATA%\Code\User\globalStorage\**\*.json
%APPDATA%\Code\User\globalStorage\state.vscdb
%APPDATA%\Code\User\mcp.json
%APPDATA%\Code\User\profiles\*\mcp.json
%APPDATA%\Code\User\profiles\*\settings.json
%APPDATA%\Code\User\settings.json
%APPDATA%\Code\User\workspaceStorage\*\state.vscdb
%APPDATA%\Composer\auth.json
%APPDATA%\Cursor\User\globalStorage\**\*.json
%APPDATA%\Cursor\User\globalStorage\state.vscdb
%APPDATA%\Cursor\User\settings.json
%APPDATA%\dart\pub-credentials.json
%APPDATA%\dart\pub-tokens.json
%APPDATA%\doctl\config.yaml
%APPDATA%\FileZilla\recentservers.xml
%APPDATA%\FileZilla\sitemanager.xml
%APPDATA%\fish\fish_history
%APPDATA%\gcloud\access_tokens.db
%APPDATA%\gcloud\application_default_credentials.json
%APPDATA%\gcloud\credentials.db
%APPDATA%\GitHub CLI\hosts.yml
%APPDATA%\gnupg
%APPDATA%\go\env
%APPDATA%\hcloud\cli.toml
%APPDATA%\helm\repositories.yaml
%APPDATA%\Microsoft\UserSecrets\*\secrets.json
%APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
%APPDATA%\Mozilla\Firefox\Profiles
%APPDATA%\netlify\Config\config.json
%APPDATA%\nikke_launcher
%APPDATA%\nikke_launcher_hmt
%APPDATA%\npm\etc\npmrc
%APPDATA%\NuGet\NuGet.Config
%APPDATA%\octopus\cli_config.json
%APPDATA%\Opera Software\Opera Stable
%APPDATA%\pip\pip.ini
%APPDATA%\postgresql\pgpass.conf
%APPDATA%\postgresql\.pg_service.conf
%APPDATA%\postgresql\psql_history
%APPDATA%\pypoetry\auth.toml
%APPDATA%\rclone\rclone.conf
%APPDATA%\s3cmd.ini
%APPDATA%\terraform.d\credentials.tfrc.json
%APPDATA%\terraform.rc
%APPDATA%\Windsurf\User\globalStorage\**\*.json
%APPDATA%\Windsurf\User\globalStorage\state.vscdb
%APPDATA%\Windsurf\User\globalStorage\storage.json
%APPDATA%\Windsurf\User\settings.json
%APPDATA%\.wrangler\config\default.toml
%APPDATA%\xdg.data\com.vercel.cli\auth.json
~\.argocd\config
~\.aws\cli\cache\*.json
~\.aws\config
~\.aws\credentials
~\.aws\sso\cache\*.json
~\.aws\sso\cache\kiro-auth-token.json
~\.Azure\accessTokens.json
~\.Azure\msal_token_cache.bin
~\.Azure\service_principal_entries.bin
~\.b2_account_info
~\.bash_history
~\.bce\config.json
~\.cache\huggingface\stored_tokens
~\.cache\huggingface\token
~\.cargo\credentials
~\.cargo\credentials.toml
C:\buildkite-agent\buildkite-agent.cfg
C:\config.toml
~\.certs\*
C:\GitLab-Runner\config.toml
~\.circleci\cli.yml
~\.claude\.credentials.json
~\.claude.json
~\.claude\settings.json
~\\.cloudflared\\*
~\.cloudsmith\credentials.ini
~\.codeium\windsurf\mcp_config.json
~\.codex\auth.json
~\.codex\config.toml
~\.config\age\*
~\.config\argocd\config
~\.config\circleci\config.yml
~\.config\configstore\firebase-tools.json
~\.config\gh\hosts.yml
~\.config\git\config
~\.config\git\credentials
~\.config\glab-cli\config.yml
~\.config\linode-cli
~\.config\planetscale\access-token
~\.config\tc\config.yml
~\.config\tea\config.yml
~\.continue\assistants\*.yaml
~\.continue\config.json
~\.continue\config.yaml
~\.continuum\anaconda-client\tokens\*.token
~\.copilot\mcp-config.json
C:\Program Files\Jenkins\secrets\initialAdminPassword
~\.cursor\mcp.json
~\.databrickscfg
~\.dbt\profiles.yml
~\.docker\config.json
~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
~\Documents\PowerShell\profile.ps1
~\Documents\.Renviron
~\Documents\.Rprofile
~\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
~\Documents\WindowsPowerShell\profile.ps1
~\.dogrc
~\.dsh\.credentials.yaml
~\.expo\state.json
~\.fly\config.yml
~\.gem\credentials
~\.gemini\google_accounts.json
~\.gemini\oauth_creds.json
~\.gemini\settings.json
~\.gitconfig
~\.git-credentials
~\.gradle\gradle.properties
~\.hcloud\config.json
~\.jenkins\secrets\initialAdminPassword
~\.jfrog\jfrog-cli.conf
~\.jfrog\jfrog-cli.conf.v6
~\.kaggle\access_token
~\.kaggle\kaggle.json
~\.keys\*
~\.kimi\config.toml
~\.kimi\credentials\*.json
~\.kimi\mcp.json
~\.kube\config
%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data
%LOCALAPPDATA%\ContinuumIO\binstar\*.token
%LOCALAPPDATA%\glab-cli\config.yml
%LOCALAPPDATA%\Google\Chrome\Application
%LOCALAPPDATA%\Google\Chrome\User Data
%LOCALAPPDATA%\Google\Chrome\User Data\PlatformExperienceHelper
%LOCALAPPDATA%\Microsoft\Edge\User Data
%LOCALAPPDATA%\ngrok\ngrok.yml
%LOCALAPPDATA%\snowflake\config.toml
%LOCALAPPDATA%\snowflake\connections.toml
%LOCALAPPDATA%\Vivaldi\User Data
~\.local\share\fish\fish_history
~\.m2\settings.xml
~\mc\config.json
~\.modal.toml
~\.mysql_history
~\.ncloud\configure
~\.netrc
~\_netrc
~\.node_repl_history
~\.npmrc
~\.oci\*
~\.oci\config
~\.oraclebmc\config
~\.pg_service.conf
~\pip\pip.ini
%PROGRAMDATA%\gemini-cli\settings.json
%PROGRAMDATA%\Git\config
%PROGRAMDATA%\pip\pip.ini
%PROGRAMFILES%\Git\etc\gitconfig
~\.psql_history
~\.pulumi\credentials.json
~\.pypirc
~\.python_history
~\.qwen\.env
~\.qwen\settings.json
~\.railway\config.json
~\.rclone.conf
~\.rediscli_history
~\.runpod\config.toml
~\.s3cfg
~\.sbt\.credentials
~\.sbt\sonatype_central_credentials
~\.semgrep\settings.yml
~\.sentryclirc
~\.snowflake\config.toml
~\.snowflake\connections.toml
~\.snowsql\config
~\.sqlite_history
~\.ssh\
~\\.ssh\\*
~\.ssh\config
~\.supabase\access-token
~\.tccli\*.credential
%TEMP%\k2f-bcreds-
~\.terraform.d\credentials.tfrc.json
~\.terraformrc
~\.twilio-cli\config.json
~\.usacloud\*\config.json
%USERPROFILE%\code
%USERPROFILE%\.config\configstore\snyk.json
%USERPROFILE%\.config\containers\auth.json
%USERPROFILE%\.config\neonctl\credentials.json
%USERPROFILE%\.config\stripe\config.toml
%USERPROFILE%\.config\stripe\credentials.json
%USERPROFILE%\.config\.wrangler\config\default.toml
%USERPROFILE%\Desktop
%USERPROFILE%\dev
%USERPROFILE%\Documents
%USERPROFILE%\.local\share\opencode\auth.json
%USERPROFILE%\Programming
%USERPROFILE%\source
~\.vault-token
~\.volcengine\config.json
~\.yarnrc
~\.yarnrc.yml
~\.zsh_history
Environment variables read as a file path (16)
$AWS_CONFIG_FILE
$AWS_SHARED_CREDENTIALS_FILE
$B2_ACCOUNT_INFO
$BUILDKITE_AGENT_CONFIG
$DATABRICKS_CONFIG_FILE
$GOOGLE_APPLICATION_CREDENTIALS
$HELM_REPOSITORY_CONFIG
$HF_TOKEN_PATH
$MODAL_CONFIG_PATH
$NPM_CONFIG_USERCONFIG
$OCI_CONFIG_FILE
$PGPASSFILE
$PGSERVICEFILE
$PIP_CONFIG_FILE
$RCLONE_CONFIG
$TF_CLI_CONFIG_FILE
Browser profile subpaths (inside each Chrome/Edge/Brave/Vivaldi/Opera/Firefox profile) (17)
\ChatSessions\
\Cookies
\Extensions
\Extensions\
\IndexedDB\chrome-extension_
\key4.db
\Local Extension Settings\
\Local State
\Local Storage\leveldb
\Login Data
\Login Data For Account
\logins.json
\Network\Cookies
\private-keys-v1.d
\private-keys-v1.d\
\Skills-
\u%04x
Registry keys (7)
HARDWARE\DESCRIPTION\System\CentralProcessor\0
Software\Classes\CLSID\{E77CC89B-7401-4C04-8CED-149DB35ADD04}\InprocServer32
Software\GNU\GnuPG
Software\Martin Prikryl\WinSCP 2\Sessions
SOFTWARE\Microsoft\Windows NT\CurrentVersion
Software\SimonTatham\PuTTY\Sessions
SYSTEM\CurrentControlSet\Control\Session Manager\Environment
File names and extensions it looks for while scanning (39)
%0\x00
cloudformation.schema.json
codex-index-v1.json
config.ini
credentials
.db
diagnosticMessages.generated.json
docker-compose.yaml
docker-compose.yml
.env
.example
.git
hooks-index.json
inheritance.json
key4.db
kiro-auth-token.json
known_hosts
known_hosts.old
.ldb
.log
logins.json
.mcp.json
mcp.json
mcp_marketplace_catalog.json
.NET user-secrets
.old
old-clsid.txt
.package-lock.json
package-lock.json
%ProgramFiles%\Google\Chrome\Application
%ProgramFiles(x86)%\Google\Chrome\Application
%ProgramFiles(x86)%\NuGet\Config\NuGet.Config
%ProgramW6432%\Google\Chrome\Application
.sample
.sst
.template
toolEmbeddings.json
%XDG_CONFIG_HOME%\.semgrep\settings.yml
%XDG_CONFIG_HOME%\stripe\config.toml