Trust signals
Why this verdict
PkgRadar discounts a release’s score when public reputation argues against novel malware. The verdict above already reflects these — the panel just explains what was applied.
- Versions published
- 31
- First published
- Apr 2026
- Publisher
- aarthi-ntrjn
Recommended action
Block this updateStatic evidence trips multiple high-signal indicators. Quarantine the release until the publisher validates the change or you can rule out the indicators below.
Block this release in CIcurl · GitHub Actions
Fail the build when this package version is added or upgraded. Replace $PKGRADAR_TOKEN with a Pro / Team API key from your dashboard.
curl -fsS https://pkgradar.com/gate/npm \
-H "Authorization: Bearer $PKGRADAR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"specs":["[email protected]"],"fail_on":"high"}'GitHub Actions step:
- name: PkgRadar gate
run: |
curl -fsS https://pkgradar.com/gate/npm \
-H "Authorization: Bearer ${{ secrets.PKGRADAR_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{"specs":["[email protected]"],"fail_on":"high"}'Why flagged
What the scanner saw
Credential file access: matched ".azure"
Not observed: package install, lifecycle script execution, or sandbox execution. PkgRadar only inspects on-disk artifacts.
Availability ledger
available
Status history (4 events)
- available → available · risk high · score 64 · status available -> available, risk high -> high, score 93 -> 64
- available → available · risk high · score 93 · status available -> available, risk high -> high, score 118 -> 93
- available → available · risk high · score 118 · status available -> available, risk high -> high, score 168 -> 118
- new → available · risk high · score 168 · status changed
Related candidates
Linked campaigns and clusters
aarthi-ntrjn
2 members · evidence strength 64Install-time lifecycle script — postinstall="node ./scripts/fix-node-pty-helper.mjs"
2 members · evidence strength 70Evidence
Static findings
20 static · 0 from release diff · showing high-signal first.
No high-signal findings — see all findings below.
Show all 20 findings (low-signal and informational)
| Severity | Kind | Path | Detail | Points |
|---|---|---|---|---|
| low | Credential file access | package/frontend/dist/assets/index-D9AYyLr1.js | matched ".azure" | 5 |
| low | Install-time lifecycle script | package.json | postinstall="node ./scripts/fix-node-pty-helper.mjs" | 5 |
| low | Obfuscation | package/backend/dist/cli/base-cli-detector.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/cli/claude-code/claude-code-hooks-injector.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/cli/claude-code/claude-code-jsonl-watcher.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/cli/copilot-cli/copilot-cli-hooks-injector.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/frontend/dist/assets/index-D9AYyLr1.js | matched "fromCharCode" | 3 |
| low | Obfuscation | package/backend/dist/integration/integration-manager.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/launch-pty/launch.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/utils/logger.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/launch-pty/pty-registry.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/api/routes/sessions.js | matched "\\x03" | 3 |
| low | Obfuscation | package/backend/dist/integration/slack/slack-listener.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/integration/slack/slack-notifier.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/integration/teams/teams-listener.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/integration/teams/teams-notifier.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/services/telemetry-service.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/api/routes/test-utils.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/backend/dist/services/update-service.js | matched "\\x1b" | 3 |
| low | Obfuscation | package/frontend/dist/assets/vendor-tour-uIGvH5JC.js | matched "\\u00C0" | 3 |
Manifest
Package metadata
Scripts14
buildnpm run build --workspacesdevnpm run dev --workspace=backendpostinstallnode ./scripts/fix-node-pty-helper.mjsprepublishOnlynpm run buildtestnpm run test --workspacestest:allnpm test && npm run test:e2e && npm run test:e2e:realtest:coveragenpm run test:coverage --workspace=backend && npm run test:coverage --workspace=frontendtest:coverage:allnpm run test:coverage && npm run test:coverage:e2e && npm run test:coverage:e2e:real && node scripts/generate-coverage-report.mjstest:coverage:e2ecross-env VITE_COVERAGE=true npm run build --workspace=frontend && cross-env VITE_COVERAGE=true npm run test:e2e --workspace=frontend && node scripts/merge-e2e-coverage.mjstest:coverage:e2e:realcross-env NODE_V8_COVERAGE=./backend/coverage-e2e/raw npm run test:e2e:real --workspace=frontend && npx c8 report --reporter=json-summary --reporter=text --src=backend/src --temp-directory=backend/coverage-e2e/raw --reports-dir=backend/coverage-e2e --alltest:e2enpm run test:e2e --workspace=frontendtest:e2e:realnpm run test:e2e:real --workspace=frontendtest:e2e:real:uinpm run test:e2e:real:ui --workspace=frontendtest:e2e:uinpm run test:e2e:ui --workspace=frontend
Dependencies21
@azure/msal-node^5.2.0@fastify/static9.1.3@fastify/swagger9.7.0@fastify/swagger-ui5.2.5@fastify/websocket11.2.0@microsoft/teams.apps^2.0.7@slack/socket-mode^2.0.6@slack/web-api^7.15.1better-sqlite312.8.0chokidar3.6.0dotenv^17.4.2fastify5.8.5jose^6.2.2js-yaml4.1.1koffi^2.16.1node-pty^1.1.0pino9.14.0pino-pretty11.3.0ps-list8.1.1uuid^11.1.1ws8.21.0