registry  /  kenkeep  /  1.13.0

kenkeep@1.13.0

⚠ Under review

Builds and maintains a per-repo knowledge base from AI coding sessions, for Claude Code, OpenAI Codex CLI, Cursor, OpenCode, and GitHub Copilot CLI.

Static Scan Results

scanned 4d ago · by rust-scanner

Static analysis flagged 15 finding(s) at 93.0% confidence. This version is warn-only unless an AI or security-team review confirms malicious behavior.

Static reason
One or more suspicious static signals were detected.; previous stored version diff introduced dangerous source

Decision evidence

public snapshot
Behavioral surface
Source
ChildProcessCryptoEnvironmentVarsEvalFilesystemNetworkShell
Supply chain
HighEntropyStringsUrlStrings
ManifestNo manifest risk signals triggered.
scanned 49 file(s), 18.5 MB of source, external domains: api.github.com, github.com, opencode.ai

Source & flagged code

7 flagged · loading source
dist/plugins/opencode/kk.mjsView file
3// [redacted].ts L4: import { spawn } from "child_process"; L5: import { join } from "path";
High
Child Process

Package source references child process execution.

dist/plugins/opencode/kk.mjsView on unpkg · L3
3Cross-file remote execution chain: dist/plugins/opencode/kk.mjs spawns dist/hooks/copilot/kk-session-start.cjs; helper contains network access plus dynamic code execution. L3: // [redacted].ts L4: import { spawn } from "child_process"; L5: import { join } from "path"; ... L10: var kk_default = async (input) => { L11: if (process.env["KENKEEP_BUILDER_INTERNAL"] === "1") return {}; L12: const projectDir = input.directory ?? input.project?.worktree ?? process.cwd(); L13: const kkHooks = join(projectDir, ".ai", "kenkeep", "hooks", "opencode"); ... L29: if (child.stdin) { L30: child.stdin.write(payload); L31: child.stdin.end();
High
Cross File Remote Execution Context

Source spawns a local helper that also contains network and dynamic execution context; review data flow before blocking.

dist/plugins/opencode/kk.mjsView on unpkg · L3
dist/cli.jsView file
matchType = previous_version_dangerous_delta matchedPackage = kenkeep@1.11.3 matchedIdentity = npm:a2Vua2VlcA:1.11.3 similarity = 0.980 summary = stored previous version shares package body but lacks this dangerous source file
Critical
Previous Version Dangerous Delta

This package version adds a dangerous source file absent from the previous stored version; route for source-aware review.

dist/cli.jsView on unpkg
525// src/harnesses/claude/headless.ts L526: import { execa } from "execa"; L527: import { createWriteStream, mkdirSync as mkdirSync5 } from "fs";
High
Shell

Package source references shell execution.

dist/cli.jsView on unpkg · L525
5934} L5935: process.stdout.write( L5936: `${JSON.stringify({ path: filePath, session_id: sessionId, idempotency })} ... L5943: import { readFileSync as readFileSync37 } from "fs"; L5944: import { resolve as resolve6 } from "path"; L5945: import matter14 from "gray-matter"; ... L5948: import matter13 from "gray-matter"; L5949: import { execFileSync as execFileSync2 } from "child_process"; L5950: import { existsSync as existsSync43, readFileSync as readFileSync36, readdirSync as readdirSync12, statSync as statSync7 } from "fs";
High
Command Output Exfiltration

Source combines command execution, command-output handling, and outbound requests; review data flow before blocking.

dist/cli.jsView on unpkg · L5934
dist/hooks/copilot/kk-session-start.cjsView file
301function createSection() { L302: return { key: "", data: "", content: "" }; L303: } ... L782: if (ch === "_") continue; L783: if (!isHexCode(data.charCodeAt(index))) return false; L784: hasDigits = true; ... L1414: if (ast.body[0].expression.body.type === "BlockStatement") { L1415: return new Function(params, source.slice(body[0] + 1, body[1] - 1)); L1416: } ... L3583: var LAUNCHER_STDIN_DEADLINE_MS = 250; L3584: function isLauncherChild(env = process.env) { L3585: return env[LAUNCHER_CHILD_ENV] === "1";
High
Obfuscated Payload Loader

Source contains an obfuscator-style string-array loader that reconstructs and executes hidden code.

dist/hooks/copilot/kk-session-start.cjsView on unpkg · L301
1414if (ast.body[0].expression.body.type === "BlockStatement") { L1415: return new Function(params, source.slice(body[0] + 1, body[1] - 1)); L1416: }
Low
Eval

Package source references a known benign dynamic code generation pattern.

dist/hooks/copilot/kk-session-start.cjsView on unpkg · L1414

Findings

1 Critical5 High3 Medium6 Low
CriticalPrevious Version Dangerous Deltadist/cli.js
HighChild Processdist/plugins/opencode/kk.mjs
HighShelldist/cli.js
HighCommand Output Exfiltrationdist/cli.js
HighObfuscated Payload Loaderdist/hooks/copilot/kk-session-start.cjs
HighCross File Remote Execution Contextdist/plugins/opencode/kk.mjs
MediumNetwork
MediumEnvironment Vars
MediumStructural Risk Force Deep Review
LowNon Install Lifecycle Scripts
LowScripts Present
LowEvaldist/hooks/copilot/kk-session-start.cjs
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings