Skip to content
Report library
Purpose / Data analysis

Fingerprint Failure Triage Skill Security Audit

What the author says it does (original text)

Read a liarjs fingerprint report and attribute each failing check to the component that produced it - what the check id measures, whether the signal comes from the launch configuration, the page-modifying layer, the network path or the machine image, and which failures are inherent to headless or datacenter environments. Use when a fingerprint scan came back with a low score, or when a check id su

Independent security check

Security risks found

Files checked
2
Risks found
3
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.Risks found: 1
Medium risk

The workflow executes third-party code through npx without a fully pinned, bundled artifact

Source references: 3
What we found

`npx liarjs@0.3` relies on npm package resolution and may download code; `0.3` is not a full immutable version or integrity hash. The executed authority belongs to that package, whose implementation is absent from the reviewed source.

Why this matters

If the resolved release, dependency, or registry source is compromised, its code runs with the invoking user's permissions and could access visible data or alter files. The supplied evidence does not show that such compromise occurred.

The procedure authorizes Bash and runs `npx liarjs@0.3`. That range is not pinned to an exact patch release, and no hash or auditable bundled copy is provided; if absent locally, npx may obtain and execute the package resolved from npm. The risk depends on the resolved package and npm configuration and could affect local files or credentials. A user can require an exact version with integrity verification, or permit only a pre-audited installed copy.

SKILL.md:19In the instructionsOpen original file
1. **Get the full result, not just the failures.** `npx liarjs@0.3 --all --json scan.json` prints   the passing checks too and saves the raw fingerprint. Which checks passed is often what separates   two possible sources for the same failure.2. **Group the failures by source** using `references/interpreting-checks.md`, which lists every id
Show 2 other places
SKILL.md:30In the instructionsOpen original file
   unattributable.5. **Compare rather than re-score:** `npx liarjs@0.3 diff before.json after.json` prints only the   checks whose status moved.
SKILL.md:5In the instructionsOpen original file
license: MITallowed-tools: Bash, Read---
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.Risks found: 1
Medium risk

The default scan performs external network checks and saves a raw browser fingerprint

Source references: 4
What we found

The recommended command saves a “raw fingerprint,” while the reference says request and network checks are skipped only with `--offline`; an edge service also observes the egress and its reputation.

Why this matters

An online run exposes the egress IP, request headers, and browser/network properties inferable from the request to the testing edge. The raw fingerprint is also written as `scan.json`, where other tools, synchronization services, or shared workflows may read it.

The default command saves the raw browser fingerprint to `scan.json`, while the reference says cross-layer network checks are skipped only with `--offline`. Thus, a default run may expose request and egress-IP characteristics to an external service and leaves sensitive fingerprint data in a local file. The text does not identify recipients, retention, or privacy handling. A user can request endpoint/data-policy disclosure and consent controls, and restrict execution to offline scans with a controlled output location.

SKILL.md:19In the instructionsOpen original file
1. **Get the full result, not just the failures.** `npx liarjs@0.3 --all --json scan.json` prints   the passing checks too and saves the raw fingerprint. Which checks passed is often what separates   two possible sources for the same failure.2. **Group the failures by source** using `references/interpreting-checks.md`, which lists every id
Show 3 other places
references/interpreting-checks.md:44In the instructionsOpen original file
The 8 cross-layer checks plus the header comparisons. These describe the egress and the request, notthe browser's JavaScript, so they are usually a different owner. `--offline` skips them.
references/interpreting-checks.md:49In the instructionsOpen original file
|---|---|---|| `ua-http-js` (25) | the `User-Agent` header against `navigator.userAgent` | They differ, so something between the browser and the edge rewrote one of them. || `cf-bot` (25) | the edge's own classification of the client | The edge classified it before any JavaScript ran. This is about the egress and its reputation; nothing in the browser is visible to it. || `platform` (15) | `Sec-CH-UA-Platform` against `navigator.platform` | The client-hint header and the JS value name different operating systems. |
references/interpreting-checks.md:50In the instructionsOpen original file
| `ua-http-js` (25) | the `User-Agent` header against `navigator.userAgent` | They differ, so something between the browser and the edge rewrote one of them. || `cf-bot` (25) | the edge's own classification of the client | The edge classified it before any JavaScript ran. This is about the egress and its reputation; nothing in the browser is visible to it. || `platform` (15) | `Sec-CH-UA-Platform` against `navigator.platform` | The client-hint header and the JS value name different operating systems. || `tz` (12) | IP-derived timezone against browser timezone | They differ. Inherent to most proxied and datacenter setups, where the browser's zone and the exit IP's region are configured independently. || `lang` (8) | `Accept-Language` against `navigator.languages[0]` | They differ, so the header and the JS list come from different places. |
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.No risks found
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.Risks found: 1
Medium risk

Detailed attribution and iterative rescanning can help reduce automation detectability

Source references: 5
What we found

Beyond explaining checks, the material discloses that a fixed debugging port avoids the same webdriver signal and recommends changing one factor at a time before rescanning. It also maps edge bot classification and cross-layer contradictions to their sources.

Why this matters

When applied to third-party sites without authorization, this can help an operator iteratively remove signs of automation, proxying, or emulation, risking account suspension, terms-of-service violations, or evasion of anti-abuse controls.

The Skill says it only attributes findings and leaves action to the operator, but it still supplies actionable evasion information: a fixed debugging port avoids the same webdriver signal, and users are told to change one factor at a time and repeatedly compare scans. This can support legitimate diagnostics, but also systematic reduction of automation visibility affecting site risk, account, or access decisions; no authorization from target sites is required. Users can ask that use be limited to owned or expressly authorized environments and that detector-bypass configuration advice be excluded.

SKILL.md:28In the instructionsOpen original file
   correctly.4. **Re-scan one change at a time.** Several ids move together, so a batch of edits leaves the result   unattributable.5. **Compare rather than re-score:** `npx liarjs@0.3 diff before.json after.json` prints only the   checks whose status moved.
Show 4 other places
SKILL.md:55In the instructionsOpen original file
- `webdriver` (-40): the automation flag is set. Note that `--remote-debugging-port=0` also sets it,  because the ephemeral-port handshake is itself an automation signal; a fixed reserved port does  not.- `native-integrity` (-35): one of 26 core APIs does not report genuine `[native code]`.
references/interpreting-checks.md:49In the instructionsOpen original file
|---|---|---|| `ua-http-js` (25) | the `User-Agent` header against `navigator.userAgent` | They differ, so something between the browser and the edge rewrote one of them. || `cf-bot` (25) | the edge's own classification of the client | The edge classified it before any JavaScript ran. This is about the egress and its reputation; nothing in the browser is visible to it. || `platform` (15) | `Sec-CH-UA-Platform` against `navigator.platform` | The client-hint header and the JS value name different operating systems. || `tz` (12) | IP-derived timezone against browser timezone | They differ. Inherent to most proxied and datacenter setups, where the browser's zone and the exit IP's region are configured independently. || `lang` (8) | `Accept-Language` against `navigator.languages[0]` | They differ, so the header and the JS list come from different places. || `webrtc-ip` (10) | the public IP over WebRTC against the connection IP | They differ, which is what a proxy that does not carry WebRTC media looks like. || `webrtc-mdns` (4) | host ICE candidates use `.local` names | They expose raw local addresses instead. A current Chrome obfuscates them by default. |
SKILL.md:14In the instructionsOpen original file
This skill explains measurements. What to do about a given finding depends on what the browser isfor, and that call belongs to whoever operates it.
references/interpreting-checks.md:88In the instructionsOpen original file
Several ids move together: anything touching the GPU shifts `gpu-triad`, `webgl-pair` and `gpu-age`at once. When re-scanning, compare with `npx liarjs@0.3 diff before.json after.json` and change onething at a time, or the result cannot be attributed to anything.
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.No risks found

Inside this skill

4 instruction sections

The Skill primarily interprets fingerprint-test results by attributing failures to browser launch configuration, page modification, network path, or machine image. It also warns that the score measures internal consistency and does not predict how a site will treat the browser.

View source
SKILL.md:10In the instructionsOpen original file
A score is a summary; the check ids are the finding. The job here is attribution: for each failingid, say what it measures and which component of the setup produced that signal. That turns a numberinto an owner list.This skill explains measurements. What to do about a given finding depends on what the browser isfor, and that call belongs to whoever operates it.
SKILL.md:68In the instructionsOpen original file
Internal coherence only. It is not a prediction about how a given site will treat the browser: realdetectors also weigh IP reputation, account history and behaviour, none of which a local scanobserves. Report an improved result as "these contradictions are gone", never as an outcome forecast.

The workflow does more than read an existing report: it directs the agent to obtain and execute liarjs through npx, scan the browser, save its raw fingerprint, then rescan and compare results after each change.

View source
SKILL.md:19In the instructionsOpen original file
1. **Get the full result, not just the failures.** `npx liarjs@0.3 --all --json scan.json` prints   the passing checks too and saves the raw fingerprint. Which checks passed is often what separates   two possible sources for the same failure.2. **Group the failures by source** using `references/interpreting-checks.md`, which lists every id
SKILL.md:28In the instructionsOpen original file
   correctly.4. **Re-scan one change at a time.** Several ids move together, so a batch of edits leaves the result   unattributable.5. **Compare rather than re-score:** `npx liarjs@0.3 diff before.json after.json` prints only the   checks whose status moved.

The reference states that an online scan includes network-layer and edge-classification checks; these checks are skipped only when `--offline` is explicitly used.

View source
references/interpreting-checks.md:42In the instructionsOpen original file
## Signals owned by the network pathThe 8 cross-layer checks plus the header comparisons. These describe the egress and the request, notthe browser's JavaScript, so they are usually a different owner. `--offline` skips them.
references/interpreting-checks.md:49In the instructionsOpen original file
|---|---|---|| `ua-http-js` (25) | the `User-Agent` header against `navigator.userAgent` | They differ, so something between the browser and the edge rewrote one of them. || `cf-bot` (25) | the edge's own classification of the client | The edge classified it before any JavaScript ran. This is about the egress and its reputation; nothing in the browser is visible to it. || `platform` (15) | `Sec-CH-UA-Platform` against `navigator.platform` | The client-hint header and the JS value name different operating systems. |
Start here · InstructionsSKILL.md
fingerprint-failure-triage
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source.

File reference map

References: 1
Files making referencesReferenced content
Lines show actual file references, not execution order. Select a node to highlight its connections and inspect the files and source locations. Dashed lines include files that still need locating.
Files and check records2 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included
  • references/interpreting-checks.mdFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions
  • references/interpreting-checks.mdSupporting file

Operations mentioned in code and instructions

Run commands
SKILL.md:5In the instructionsOpen original file
license: MITallowed-tools: Bash, Read---
Install extra software packages
SKILL.md:19In the instructionsOpen original file
1. **Get the full result, not just the failures.** `npx liarjs@0.3 --all --json scan.json` prints   the passing checks too and saves the raw fingerprint. Which checks passed is often what separates
SKILL.md:30In the instructionsOpen original file
   unattributable.5. **Compare rather than re-score:** `npx liarjs@0.3 diff before.json after.json` prints only the   checks whose status moved.
references/interpreting-checks.md:89In the instructionsOpen original file
Several ids move together: anything touching the GPU shifts `gpu-triad`, `webgl-pair` and `gpu-age`at once. When re-scanning, compare with `npx liarjs@0.3 diff before.json after.json` and change onething at a time, or the result cannot be attributed to anything.
Connect to websites
SKILL.md:75In the instructionsOpen original file
Per-check field notes: <https://liarjs.dev/cli/>.
Lines read
173
File checksum (to compare versions)
1ef3ea6bb3b71957437a694040a00cb547e5a2e2132af74626b39a16e9d4566b