github TypeScript analyzed de3d264

iampantherr/SecureContext

github

Persistent memory + security layer for Claude Code (MCP plugin). Agents remember your project across sessions (~87% fewer context tokens), every tool call lands in a tamper-evident HMAC audit chain, and skills are AST-scanned + HMAC-verified before they run. 100% local: PostgreSQL + Ollama, no cloud, MIT.

maintainer
iampantherr
licence
MIT
first seen
2026-06-10
last seen
2026-09-07
releases · 30d
0
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  2. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  3. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  4. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  5. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  6. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  7. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  8. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  9. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  10. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  11. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  12. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  13. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  14. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  15. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  16. HIGH code analysis flagged dynamic code execution in iampantherr/SecureContext
  17. HIGH code analysis flagged dynamic code execution ×3 in iampantherr/SecureContext
  18. HIGH code analysis flagged dynamic code execution ×3 in iampantherr/SecureContext
  19. HIGH code analysis flagged committed secret, dynamic code execution ×3 in iampantherr/SecureContext
  20. HIGH code analysis flagged committed secret, dynamic code execution ×3 in iampantherr/SecureContext
capabilities 19 tools
transport stdio · http counts 19 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • zc_batch
  • zc_broadcast
  • zc_compact_window
  • zc_context_status
  • zc_evidence
  • zc_execute
  • zc_execute_file
  • zc_fetch
  • zc_forget
  • zc_index
  • zc_index_file
  • zc_memory_contradictions
  • zc_recall_context
  • zc_remember
  • zc_search
  • zc_search_global
  • zc_status
  • zc_summarize_session
  • zc_verify_claim
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit de3d264 · analyzer v33 · 3d ago

skills & prompt files 3

danger signals11

code evidence vv0.48.1 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 292

filesystem 138

  • fs iampantherr-SecureContext-de3d264/bench/t3/extract-bakeoff.mjs :9 import { writeFileSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/bench/t3/model-bakeoff.mjs :19 import { readFileSync, writeFileSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/_project-hash.mjs :29 import { existsSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/learnings-indexer.mjs :49 import { existsSync, readFileSync, realpathSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/postedit-reindex.mjs :23 import { readFileSync, statSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/posttool-outcomes.mjs :34 import { existsSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/posttooluse.mjs :16 import { mkdirSync, appendFileSync, statSync, readFileSync, writeFileSync, existsSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/preread-dedup.mjs :34 import { readFileSync, statSync, existsSync, writeFileSync, mkdirSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/prewrite-impact.mjs :37 import { readFileSync, existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/hooks/project-hash.test.mjs :9 import { existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/hooks/project-root.test.mjs :11 import { mkdirSync, writeFileSync, rmSync, existsSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/skill-script-hmac-verify.mjs :35 import { readFileSync, appendFileSync, mkdirSync } from "node:fs";
show 28 more
  • fs iampantherr-SecureContext-de3d264/hooks/stop-autoextract.mjs :28 import { mkdirSync, readFileSync, writeFileSync, existsSync, statSync, appendFileSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/stop.mjs :16 import { mkdirSync, appendFileSync, statSync, readFileSync, writeFileSync, existsSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/userprompt-autoextract.mjs :21 import { mkdirSync, appendFileSync, statSync, existsSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/userpromptsubmit-outcome.mjs :29 import { existsSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/hooks/zc-edit-mode.mjs :26 import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/init.mjs :24 import { readFileSync, writeFileSync, existsSync, mkdirSync, copyFileSync, readdirSync } from "node:fs";
  • fs iampantherr-SecureContext-de3d264/install.mjs :22 import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, unlinkSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/_e2e_audit_skills.mjs :5 import { readdirSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/backfill-learnings.mjs :22 import { readFileSync, existsSync, readdirSync, mkdirSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/backfill-source-meta-to-pg.mjs :29 import { readdirSync, readFileSync, existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/background-index.mjs :40 import { readFileSync, writeFileSync, unlinkSync, existsSync, mkdirSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/check-env-pinning.mjs :42 import { readFileSync, readdirSync, statSync, existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/check-env-pinning.test.mjs :15 import { mkdtempSync, writeFileSync, mkdirSync, rmSync, readFileSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/e2e-dispatcher-test.mjs :20 import { readFileSync, existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/e2e-verify.mjs :17 import { readdirSync, statSync, existsSync, readFileSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/extract-skills-from-roles.mjs :38 import { readFileSync, writeFileSync, existsSync, mkdirSync, copyFileSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/find-live-db.mjs :11 import { readdirSync, statSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/impact-advisory.mjs :26 import { readFileSync, existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/inspect-live-agents.mjs :8 import { readdirSync, statSync, existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/issue-token.mjs :17 import { mkdirSync, existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/lint-skills.mjs :13 import { readFileSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/live-api-test.mjs :13 import { mkdirSync, unlinkSync, existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/live-docker-test.mjs :28 import { readFileSync, existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/live-e2e.mjs :26 import { existsSync, mkdirSync, writeFileSync, rmSync, statSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/live-harness-test.mjs :18 import { mkdirSync, unlinkSync, existsSync, writeFileSync, rmSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/live-rbac-test.mjs :7 import { mkdirSync, unlinkSync, existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/live-smart-memory-test.mjs :9 import { mkdirSync, unlinkSync, existsSync } from "node:fs";
  • fs (weak) iampantherr-SecureContext-de3d264/scripts/live-store-test.mjs :10 import { mkdirSync, unlinkSync, existsSync } from "node:fs";

98 more not shown — this panel samples each group; the count above is the real total.

shell / exec 27

  • shell iampantherr-SecureContext-de3d264/init.mjs :25 import { execSync, spawnSync } from "node:child_process";
  • shell iampantherr-SecureContext-de3d264/install.mjs :23 import { execSync } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/check-env-pinning.test.mjs :14 import { spawnSync } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/impact-advisory.mjs :25 import { execFileSync } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/live-e2e.mjs :29 import { spawnSync } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/memory-bench.mjs :19 import { execFileSync } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/seed-mature-memory.mjs :19 import { execFileSync } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/setup-docker.mjs :33 import { spawnSync } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/stress-multiproject.mjs :5 import { spawn } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/stress-test.mjs :23 import { spawn } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/test-autoindex-live.mjs :15 import { spawn, spawnSync } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/test-hooks-live.mjs :15 import { spawn } from "node:child_process";
show 15 more
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/test-lint-catches-floating-promise.mjs :14 import { spawnSync } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/scripts/v016-live-check.mjs :135 const { execSync } = await import("node:child_process");
  • shell (weak) iampantherr-SecureContext-de3d264/security-tests/run-all.mjs :7 import { spawn, spawnSync } from "node:child_process";
  • shell iampantherr-SecureContext-de3d264/src/api-server.ts :1699 const { execFile } = await import("node:child_process");
  • shell (weak) iampantherr-SecureContext-de3d264/src/claim_verify.test.ts :7 import { execFileSync } from "node:child_process";
  • shell iampantherr-SecureContext-de3d264/src/claim_verify.ts :36 import { execFileSync } from "node:child_process";
  • shell iampantherr-SecureContext-de3d264/src/graph_proxy.ts :46 import { spawn, type ChildProcessWithoutNullStreams } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/src/indexing/cross_repo.test.ts :68 `function launch(){ spawn("powershell", ["-File", "spawn-agent.ps1"]); }`, "d.mjs");
  • shell iampantherr-SecureContext-de3d264/src/indexing/py_call_graph.ts :18 import { spawnSync } from "node:child_process";
  • shell (weak) iampantherr-SecureContext-de3d264/src/learnings_indexer.test.ts :23 import { spawnSync } from "node:child_process";
  • shell iampantherr-SecureContext-de3d264/src/outcomes.ts :23 * - git_commit resolver uses git library, NOT shell exec (no injection)
  • shell iampantherr-SecureContext-de3d264/src/sandbox.ts :1 import { spawn, spawnSync } from "node:child_process";
  • shell iampantherr-SecureContext-de3d264/src/skills/anthropic_standard.ts :76 - eval(...), exec(...), compile(...)
  • shell iampantherr-SecureContext-de3d264/src/skills/mutators/cli_headless.ts :23 import { spawnSync } from "node:child_process";
  • shell iampantherr-SecureContext-de3d264/src/skills/script_scanner.ts :19 import { spawnSync } from "node:child_process";

network 45

  • net iampantherr-SecureContext-de3d264/bench/t3/model-bakeoff.mjs :64 const resp = await fetch(`${OLLAMA}/api/chat`, {
  • net iampantherr-SecureContext-de3d264/hooks/preread-dedup.mjs :222 const resp = await fetch(`${apiUrl}/api/v1/telemetry/pretool-event`, {
  • net iampantherr-SecureContext-de3d264/hooks/prewrite-impact.mjs :143 const resp = await fetch(`${apiUrl}/api/v1/telemetry/pretool-event`, {
  • net iampantherr-SecureContext-de3d264/hooks/skill-script-hmac-verify.mjs :93 const res = await fetch(url, {
  • net iampantherr-SecureContext-de3d264/hooks/stop-autoextract.mjs :50 const res = await fetch(url, { ...opts, signal: ctl.signal });
  • net (weak) iampantherr-SecureContext-de3d264/scripts/ci-memory.mjs :53 const res = await fetch(`${API}${path}`, {
  • net (weak) iampantherr-SecureContext-de3d264/scripts/e2e-dispatcher-test.mjs :77 const res = await fetch(`${API_URL}${path}`, {
  • net (weak) iampantherr-SecureContext-de3d264/scripts/live-api-test.mjs :67 const res = await fetch(`${BASE}${path}`, opts);
  • net (weak) iampantherr-SecureContext-de3d264/scripts/live-docker-test.mjs :89 const res = await fetch(url, opts);
  • net (weak) iampantherr-SecureContext-de3d264/scripts/memory-bench.mjs :42 const res = await fetch(`${API}${path}`, {
  • net (weak) iampantherr-SecureContext-de3d264/scripts/recall-size-check.mjs :43 const res = await fetch(`${API}/api/v1/recall?${qs}`, { headers: { Authorization: `Bearer ${KEY}` } });
  • net (weak) iampantherr-SecureContext-de3d264/scripts/seed-mature-memory.mjs :35 const res = await fetch(`${API}${path}`, {
show 28 more
  • net (weak) iampantherr-SecureContext-de3d264/scripts/setup-docker.mjs :282 const res = await fetch(url, { signal: AbortSignal.timeout(3000) });
  • net (weak) iampantherr-SecureContext-de3d264/security-tests/run-all.mjs :302 "fetch() auto-strips user:pass from URL; our header stripping handles Authorization separately");
  • net iampantherr-SecureContext-de3d264/src/api-server.ts :456 const r = await fetch(`${Config.OLLAMA_URL.replace(/\/api\/.*$/, "")}/api/tags`, { signal: ctl.signal });
  • net iampantherr-SecureContext-de3d264/src/compaction.ts :107 const r = await fetch(`${OLLAMA_URL.replace(/\/$/, "")}/api/generate`, {
  • net iampantherr-SecureContext-de3d264/src/consolidation.ts :65 const r = await fetch(`${ollamaBase()}/api/generate`, {
  • net iampantherr-SecureContext-de3d264/src/dashboard/render.ts :204 const r = await fetch('/dashboard/skill-candidates/' + candId + '/generate', { method: 'POST' });
  • net iampantherr-SecureContext-de3d264/src/dashboard/token_savings.ts :311 `Baseline assumptions: zc_recall_context=${BASELINE.recall_context()}t, zc_search=${BASELINE.search()}t, zc_file_summary=${BASELINE.file_summary()}t, zc_fetch=${BASELINE.fetch()}t per call.`,
  • net iampantherr-SecureContext-de3d264/src/embedder.ts :82 const resp = await fetch(tagsUrl, { signal: ctrl.signal });
  • net iampantherr-SecureContext-de3d264/src/event_extractor.ts :172 const resp = await fetch(extractorUrl(), {
  • net iampantherr-SecureContext-de3d264/src/evidence.ts :67 * actually write: curl invocations, bare "GET <url>", and fetch() calls.
  • net iampantherr-SecureContext-de3d264/src/fetcher.ts :374 response = await fetch(currentUrl, {
  • net iampantherr-SecureContext-de3d264/src/harness.ts :576 await fetch(`${apiUrl}/api/v1/telemetry/summarizer-event`, {
  • net iampantherr-SecureContext-de3d264/src/indexing/community_summaries.ts :25 const r = await fetch(`${ollamaBase()}/api/generate`, {
  • net (weak) iampantherr-SecureContext-de3d264/src/indexing/cross_repo.test.ts :40 " const r = await fetch(`${ZC_API_URL}/api/v1/agent-activity?limit=5`);\n" +
  • net iampantherr-SecureContext-de3d264/src/indexing/cross_repo.ts :68 * dominant real-world form — `fetch(\`${ZC_API_URL}/api/v1/operator-inbox\`)` —
  • net iampantherr-SecureContext-de3d264/src/indexing/entity_extract.ts :72 const r = await fetch(`${ollamaBase()}/api/generate`, {
  • net iampantherr-SecureContext-de3d264/src/ingest/extract_file.ts :112 const r = await fetch(`${ollamaBase()}/api/tags`);
  • net iampantherr-SecureContext-de3d264/src/llm_adjudicator.ts :73 const resp = await fetch(chatUrl(), {
  • net iampantherr-SecureContext-de3d264/src/otel_export.ts :133 const resp = await fetch(url, {
  • net (weak) iampantherr-SecureContext-de3d264/src/ownership_guard.test.ts :71 return fetch(`${baseUrl}/api/v1/broadcast`, {
  • net (weak) iampantherr-SecureContext-de3d264/src/reference_monitor.test.ts :109 // explicitly via fetch() calls; we don't need recordToolCall going via API.
  • net iampantherr-SecureContext-de3d264/src/retrieval_advanced.ts :102 const r = await fetch(`${OLLAMA_URL.replace(/\/$/, "")}/api/generate`, {
  • net iampantherr-SecureContext-de3d264/src/server.ts :101 const res = await fetch(url, {
  • net iampantherr-SecureContext-de3d264/src/skill_candidate_generator.ts :102 const r = await fetch(url, {
  • net iampantherr-SecureContext-de3d264/src/skills/lint.ts :146 errors.push("requires_network=true but network_allowlist is empty — skills with network access MUST declare which URLs they may fetch (security gate)");
  • net iampantherr-SecureContext-de3d264/src/skills/marketplace_pull.ts :99 const res = await fetch(url, {
  • net iampantherr-SecureContext-de3d264/src/skills/mutators/batch_sonnet.ts :79 const submitResp = await fetch(BATCH_BASE_URL, {
  • net iampantherr-SecureContext-de3d264/src/skills/mutators/realtime_sonnet.ts :60 response = await fetch(ANTHROPIC_URL, {

5 more not shown — this panel samples each group; the count above is the real total.

secrets 55

  • secrets iampantherr-SecureContext-de3d264/hooks/learnings-indexer.mjs :215 password: process.env.ZC_POSTGRES_PASSWORD || "",
  • secrets iampantherr-SecureContext-de3d264/hooks/posttool-outcomes.mjs :70 password: process.env.ZC_POSTGRES_PASSWORD || "",
  • secrets iampantherr-SecureContext-de3d264/hooks/preread-dedup.mjs :220 const apiKey = process.env.ZC_API_KEY ?? "";
  • secrets iampantherr-SecureContext-de3d264/hooks/prewrite-impact.mjs :147 ...(process.env.ZC_API_KEY ? { Authorization: `Bearer ${process.env.ZC_API_KEY}` } : {}),
  • secrets iampantherr-SecureContext-de3d264/hooks/skill-script-hmac-verify.mjs :89 const apiKey = process.env.ZC_API_KEY || "";
  • secrets iampantherr-SecureContext-de3d264/hooks/stop-autoextract.mjs :108 let apiKey = process.env.ZC_API_KEY || "";
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/backfill-learnings.mjs :143 password: process.env.ZC_POSTGRES_PASSWORD || "",
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/backfill-source-meta-to-pg.mjs :45 password: process.env.ZC_POSTGRES_PASSWORD,
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/ci-memory.mjs :33 const KEY = process.env.ZC_API_KEY || "";
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/e2e-dispatcher-test.mjs :41 const API_KEY = process.env["API_KEY"] ?? dockerEnv["ZC_API_KEY"] ?? "";
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/live-api-test.mjs :18 process.env["ZC_API_KEY"] = "test-api-key-live-suite";
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/live-docker-test.mjs :51 const API_KEY = process.env["SC_API_KEY"] ?? dotenv["ZC_API_KEY"] ?? "";
show 28 more
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/live-harness-test.mjs :86 function getSecret(): string { return process.env.ZC_SECRET ?? "dev"; }
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/memory-bench.mjs :24 const KEY = process.env.ZC_API_KEY || readEnvKey();
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/migrate-sqlite-to-pg.mjs :75 password: process.env.ZC_POSTGRES_PASSWORD || "",
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/recall-size-check.mjs :26 const KEY = process.env.ZC_API_KEY || readEnvKey();
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/seed-mature-memory.mjs :23 const KEY = process.env.ZC_API_KEY || readEnvKey();
  • secrets (weak) iampantherr-SecureContext-de3d264/scripts/sprint2-cross-project-demo.mjs :29 process.env.ZC_POSTGRES_PASSWORD ??= "79bd1ca6011b797c70e90c02becdaa90d99cfc501abaec09";
  • secrets iampantherr-SecureContext-de3d264/src/api-server.ts :59 const API_KEY = process.env["ZC_API_KEY"];
  • secrets iampantherr-SecureContext-de3d264/src/dashboard/token_savings.ts :107 return parseFloat(process.env.ZC_SAVINGS_AVG_COST_PER_TOKEN ?? "0.000003"); // $3/MTok input default
  • secrets iampantherr-SecureContext-de3d264/src/harness.ts :480 if (!process.env.ZC_POSTGRES_HOST && !process.env.ZC_POSTGRES_PASSWORD) {
  • secrets iampantherr-SecureContext-de3d264/src/indexing/backlinks.ts :202 if (!process.env.ZC_POSTGRES_HOST && !process.env.ZC_POSTGRES_PASSWORD) return;
  • secrets iampantherr-SecureContext-de3d264/src/indexing/call_edges.ts :255 if (!process.env.ZC_POSTGRES_HOST && !process.env.ZC_POSTGRES_PASSWORD) return;
  • secrets iampantherr-SecureContext-de3d264/src/knowledge.ts :284 if (!process.env.ZC_POSTGRES_HOST && !process.env.ZC_POSTGRES_PASSWORD) return;
  • secrets iampantherr-SecureContext-de3d264/src/memory_contradictions.ts :341 if (!process.env.ZC_POSTGRES_HOST && !process.env.ZC_POSTGRES_PASSWORD) return;
  • secrets (weak) iampantherr-SecureContext-de3d264/src/operator_inbox.test.ts :32 process.env.ZC_POSTGRES_PASSWORD ??= "79bd1ca6011b797c70e90c02becdaa90d99cfc501abaec09";
  • secrets iampantherr-SecureContext-de3d264/src/outcomes.ts :263 if (!targetSkill && (process.env.ZC_POSTGRES_HOST || process.env.ZC_POSTGRES_PASSWORD)) {
  • secrets (weak) iampantherr-SecureContext-de3d264/src/ownership_guard.test.ts :50 process.env.ZC_API_KEY = apiKey;
  • secrets iampantherr-SecureContext-de3d264/src/pg_pool.ts :49 password: process.env.ZC_POSTGRES_PASSWORD || "",
  • secrets (weak) iampantherr-SecureContext-de3d264/src/postgres_backend.test.ts :44 process.env.ZC_POSTGRES_PASSWORD ??= "79bd1ca6011b797c70e90c02becdaa90d99cfc501abaec09";
  • secrets (weak) iampantherr-SecureContext-de3d264/src/reference_monitor.test.ts :101 process.env.ZC_API_KEY = testApiKey;
  • secrets (weak) iampantherr-SecureContext-de3d264/src/sandbox.test.ts :6 process.env["ANTHROPIC_API_KEY"] = "sk-test-secret-key";
  • secrets (weak) iampantherr-SecureContext-de3d264/src/security/audit_log.test.ts :39 delete process.env.ZC_MACHINE_SECRET;
  • secrets (weak) iampantherr-SecureContext-de3d264/src/security/chained_table.test.ts :80 const prevEnv = process.env.ZC_MACHINE_SECRET;
  • secrets (weak) iampantherr-SecureContext-de3d264/src/security/machine_secret.test.ts :32 delete process.env.ZC_MACHINE_SECRET;
  • secrets iampantherr-SecureContext-de3d264/src/security/machine_secret.ts :81 const envSecret = process.env.ZC_MACHINE_SECRET;
  • secrets iampantherr-SecureContext-de3d264/src/server.ts :80 const ZC_API_KEY = process.env["ZC_API_KEY"];
  • secrets iampantherr-SecureContext-de3d264/src/skill_candidate_generator.ts :34 return process.env.ANTHROPIC_API_KEY ? "anthropic" : "ollama";
  • secrets iampantherr-SecureContext-de3d264/src/skills/mutation_results.ts :234 if (backend === "sqlite" && (process.env.ZC_POSTGRES_HOST || process.env.ZC_POSTGRES_PASSWORD)) {
  • secrets (weak) iampantherr-SecureContext-de3d264/src/skills/mutator.test.ts :288 const original = process.env.ANTHROPIC_API_KEY;

15 more not shown — this panel samples each group; the count above is the real total.

database 11

  • db (weak) iampantherr-SecureContext-de3d264/scripts/backfill-source-meta-to-pg.mjs :32 import pg from "pg";
  • db (weak) iampantherr-SecureContext-de3d264/scripts/lint-skills.mjs :17 import pg from "pg";
  • db (weak) iampantherr-SecureContext-de3d264/scripts/migrate-sqlite-to-pg.mjs :37 import pg from "pg";
  • db (weak) iampantherr-SecureContext-de3d264/scripts/v016-live-check.mjs :2 import { Pool } from "pg";
  • db iampantherr-SecureContext-de3d264/src/pg_migrations.ts :19 import type { PoolClient } from "pg";
  • db iampantherr-SecureContext-de3d264/src/pg_pool.ts :28 import { Pool, type PoolConfig, type PoolClient } from "pg";
  • db iampantherr-SecureContext-de3d264/src/security/chained_table_postgres.ts :41 import type { PoolClient } from "pg";
  • db iampantherr-SecureContext-de3d264/src/skills/storage_pg.ts :28 import type { PoolClient } from "pg";
  • db iampantherr-SecureContext-de3d264/src/store-postgres.ts :33 import pg from "pg";
  • db iampantherr-SecureContext-de3d264/src/task_queue.ts :30 import type { PoolClient } from "pg";
  • db iampantherr-SecureContext-de3d264/vitest.setup.ts :24 import pg from "pg";

tool registrations 19

  • zc_execute iampantherr-SecureContext-de3d264/src/server.ts :184
  • zc_execute_file iampantherr-SecureContext-de3d264/src/server.ts :200
  • zc_fetch iampantherr-SecureContext-de3d264/src/server.ts :215
  • zc_index iampantherr-SecureContext-de3d264/src/server.ts :231
  • zc_search iampantherr-SecureContext-de3d264/src/server.ts :243
  • zc_search_global iampantherr-SecureContext-de3d264/src/server.ts :266
  • zc_batch iampantherr-SecureContext-de3d264/src/server.ts :284
  • zc_remember iampantherr-SecureContext-de3d264/src/server.ts :308
  • zc_index_file iampantherr-SecureContext-de3d264/src/server.ts :336
  • zc_memory_contradictions iampantherr-SecureContext-de3d264/src/server.ts :352
  • zc_forget iampantherr-SecureContext-de3d264/src/server.ts :371
  • zc_recall_context iampantherr-SecureContext-de3d264/src/server.ts :385
show 7 more
  • zc_summarize_session iampantherr-SecureContext-de3d264/src/server.ts :414
  • zc_verify_claim iampantherr-SecureContext-de3d264/src/server.ts :431
  • zc_evidence iampantherr-SecureContext-de3d264/src/server.ts :450
  • zc_status iampantherr-SecureContext-de3d264/src/server.ts :473
  • zc_compact_window iampantherr-SecureContext-de3d264/src/server.ts :487
  • zc_context_status iampantherr-SecureContext-de3d264/src/server.ts :502
  • zc_broadcast iampantherr-SecureContext-de3d264/src/server.ts :516

install hooks 1

  • prepublishOnly iampantherr-SecureContext-de3d264/package.json :46 npm run build && npm test

declared dependencies 17

  • @modelcontextprotocol/sdk@^1.0.0
  • @fastify/cors@^11.2.0
  • @types/pg@^8.20.0
  • acorn@^8.16.0
  • acorn-walk@^8.3.5
  • fastify@^5.8.4
  • graphology@^0.26.0
  • graphology-communities-louvain@^2.0.2
  • pdfjs-dist@^4.10.38
  • pg@^8.20.0
  • typescript@^5.3.3
  • @types/node@^22.13.0
show 5 more
  • @typescript-eslint/eslint-plugin@^8.58.2
  • @typescript-eslint/parser@^8.58.2
  • eslint@^9.39.4
  • typescript-eslint@^8.58.2
  • vitest@^4.1.0

obfuscation 10

  • dynamic require()/import() iampantherr-SecureContext-de3d264/hooks/learnings-indexer.mjs :199 try { pg = await import("file:///" + p.replace(/\\/g, "/")); break; } catch { /* try next */ }
  • dynamic require()/import() iampantherr-SecureContext-de3d264/hooks/postbash-capture.mjs :54 const { captureToolOutput } = await import(`${scBase}/harness.js`);
  • dynamic require()/import() iampantherr-SecureContext-de3d264/hooks/postedit-reindex.mjs :53 const { summarizeFile } = await import(`${scBase}/summarizer.js`);
  • dynamic require()/import() iampantherr-SecureContext-de3d264/hooks/posttool-outcomes.mjs :60 try { pg = await import("file:///" + p.replace(/\\/g, "/")); break; } catch { /* try next */ }
  • dynamic require()/import() iampantherr-SecureContext-de3d264/hooks/preread-dedup.mjs :265 const harness = await import(`file://${scPath.replace(/\\/g, "/")}/harness.js`);
  • dynamic require()/import() iampantherr-SecureContext-de3d264/hooks/userpromptsubmit-outcome.mjs :79 const { resolveUserPromptOutcome } = await import(`${scBase}/outcomes.js`);
  • dynamic require()/import() iampantherr-SecureContext-de3d264/scripts/background-index.mjs :51 const { runMigrations } = await import(`file://${distDir.replace(/\\/g, "/")}/migrations.js`);
  • dynamic require()/import() iampantherr-SecureContext-de3d264/scripts/probe-indexing-status.mjs :16 const { getIndexingStatus } = await import(`${distUrl}/harness.js`);
  • dynamic require()/import() iampantherr-SecureContext-de3d264/scripts/run-nightly-skill-sweep.mjs :85 const { withClient } = await import(`file:///${SC}/dist/pg_pool.js`.replace(/\\/g, "/"));
  • dynamic require()/import() iampantherr-SecureContext-de3d264/src/indexing/model_router.test.ts :35 const mod = await import("./model_router.js?t=" + Date.now());