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.
- Weekly downloads
- 559
- Versions published
- 113
- First published
- Feb 2026
- Publisher
- lucy.cl
Recommended action
Review before promotingMixed signals: the package has indicators worth reading before allowing the update in automated dependency flows.
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":["@pencil-agent/[email protected]"],"fail_on":"review"}'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":["@pencil-agent/[email protected]"],"fail_on":"review"}'Why flagged
What the scanner saw
Remote Payload: matched "curl "
Not observed: package install, lifecycle script execution, or sandbox execution. PkgRadar only inspects on-disk artifacts.
Availability ledger
available
Status history (1 event)
- new → available · risk review · score 47 · status changed
Evidence
Static findings
8 static · 0 from release diff · showing high-signal first.
| Severity | Kind | Path | Detail | Points |
|---|---|---|---|---|
| medium | Remote Payload | package/dist/extensions/defaults/browser/src/browser_harness/admin.py | matched "curl " | 12 |
Show all 8 findings (low-signal and informational)
| Severity | Kind | Path | Detail | Points |
|---|---|---|---|---|
| medium | Remote Payload | package/dist/extensions/defaults/browser/src/browser_harness/admin.py | matched "curl " | 12 |
| low | Credential file access | package/dist/cli/args.js | matched ".azure" | 5 |
| low | Credential file access | package/dist/node_modules/@pencil-agent/ai/providers/azure-openai-responses.js | matched ".azure" | 5 |
| low | Credential file access | package/dist/extensions/defaults/security-audit/engine/detector.js | matched ".ssh" | 5 |
| low | Credential file access | package/dist/node_modules/@pencil-agent/ai/env-api-keys.js | matched "GOOGLE_APPLICATION_CREDENTIALS" | 5 |
| low | Credential file access | package/dist/extensions/defaults/security-audit/index.js | matched ".ssh" | 5 |
| low | Credential file access | package/dist/extensions/defaults/security-audit/interface.js | matched ".ssh" | 5 |
| low | Credential file access | package/dist/core/mcp/mcp-guidance.js | matched "GITHUB_TOKEN" | 5 |
Manifest
Package metadata
Scripts30
benchmarknode scripts/startup-benchmark.cjsbenchmark:comparenode scripts/startup-benchmark.cjs --baseline .benchmarks/baseline.jsonbenchmark:savenode scripts/startup-benchmark.cjs --output .benchmarks/baseline.jsonbuildnpm run clean:dist && npm run build:deps && tsc -p tsconfig.build.json && npm run copy:theme:json && npm run copy:assets && npm run bundle:packages && npm run build:metabuild:depsnpm run build --prefix packages/ai && npm run build --prefix packages/agent-core && npm run build --prefix packages/tuibuild:metanode scripts/generate-build-meta.jsbuild:releasenpm run generate-models --prefix packages/ai && npm run buildbundle:packagesnode scripts/bundle-deps.jschangelognode scripts/generate-changelog.jsclean:distnode -e "require('fs').rmSync('dist',{recursive:true,force:true})"copy:assetsnode scripts/copy-assets.jscopy:theme:jsonnode -e "const fs=require('fs');const p=require('path');const d='dist/modes/interactive/theme';if(!fs.existsSync(d))fs.mkdirSync(d,{recursive:true});fs.readdirSync('modes/interactive/theme').forEach(f=>{if(f.endsWith('.json'))fs.copyFileSync(p.join('modes/interactive/theme',f),p.join(d,f))})"devtsx cli.tspostversiongit pushprepublishOnlynpm run build:releasereleasenpm version patch && npm publishstartnpx cross-env NODE_ENV=production node --no-deprecation dist/cli.jstest:commandsnode --test --import tsx test/slash-command-catalog.test.tstest:interactive-memory-notifynode --test --import tsx test/interactive-memory-notify.test.ts test/session-manager-header.test.tstest:plannode --test --import tsx test/plan-mode.test.tstest:presencenode --test --import tsx test/presence-opening.test.tstest:securitynode --test --import tsx test/security-audit.test.tstest:subagentnode --test --import tsx test/subagent-parser.test.ts test/worktree-manager.test.ts test/bash-sandbox.test.tstest:teamnode --test --import tsx test/team-parser.test.ts test/team-runtime.test.tstest:toolsnode --test --import tsx test/workspace-write-guard.test.ts test/read-tool.test.ts test/tool-window-validation.test.ts test/bash-sandbox.test.tstest:utilsnode --test --import tsx test/logger.test.tsupdate-modelsnpm run generate-models --prefix packages/aiverify:dipnode --import tsx scripts/verify-dip.tsversionnpm run changelog && git add CHANGELOG.mdwatchtsc --watch
Dependencies31
@agentclientprotocol/sdk^0.16.1@anthropic-ai/sdk^0.73.0@aws-sdk/client-bedrock-runtime^3.983.0@google/genai^1.40.0@mariozechner/clipboard^0.3.2@mariozechner/jiti^2.6.2@mistralai/mistralai1.10.0@silvia-odwyer/photon-node^0.3.4@sinclair/typebox^0.34.41ajv^8.17.1ajv-formats^3.0.1chalk^5.5.0cli-highlight^2.1.11diff^8.0.2extract-zip^2.0.1file-type^21.1.1get-east-asian-width^1.3.0glob^13.0.1hosted-git-info^9.0.2ignore^7.0.5marked^15.0.12mime-types^3.0.1minimatch^10.1.1openai6.10.0partial-json^0.1.7proper-lockfile^4.1.2proxy-agent^6.5.0undici^7.19.1yaml^2.8.2zod^4.3.6- …and 1 more.
Optional dependencies1
koffi^2.9.0