github TypeScript re-analysis due

I4cTime/q-ring

github

Quantum-inspired keyring for AI coding agents. Secure secrets with superposition, entanglement, tunneling, and teleportation — CLI + 44 MCP tools.

maintainer
I4cTime
license
AGPL-3.0
first seen
2026-08-03
last seen
2026-09-03
releases · 30d
2
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 44 tools
transport stdio · http verified reported listed in the official MCP registry counts 44 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • agent_forget
  • agent_recall
  • agent_remember
  • agent_scan
  • analyze_secrets
  • audit_log
  • check_policy
  • check_project
  • ci_validate_secrets
  • delete_secret
  • detect_anomalies
  • detect_environment
  • disentangle_secrets
  • entangle_secrets
  • env_generate
  • exec_with_secrets
  • export_audit
  • export_secrets
  • generate_secret
  • get_policy_summary
  • get_project_context
  • get_secret
  • has_secret
  • health_check
  • import_dotenv
  • inspect_secret
  • lint_files
  • list_hooks
  • list_providers
  • list_secrets
  • register_hook
  • remove_hook
  • rotate_secret
  • scan_codebase_for_secrets
  • set_secret
  • status_dashboard
  • teleport_pack
  • teleport_unpack
  • tunnel_create
  • tunnel_destroy
  • tunnel_list
  • tunnel_read
  • validate_secret
  • verify_audit_chain
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 1227290 · analyzer v33 · 6d ago

skills & prompt files 11

danger signals3

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

code files: 137

filesystem 50

  • fs (weak) I4cTime-q-ring-1227290/scripts/append-changelog-to-publish-log.mjs :5 import { readFileSync, appendFileSync, existsSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/scripts/build-dashboard-client.mjs :17 import { readFileSync, writeFileSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/scripts/build-mcpb.mjs :20 import { mkdirSync, rmSync, writeFileSync, copyFileSync, readFileSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/scripts/check-plugin-parity.mjs :12 import { readFileSync, readdirSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/scripts/plugin-generate-skills.mjs :16 import { readFileSync, writeFileSync, readdirSync, mkdirSync, existsSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/scripts/plugin-sync-claude.mjs :50 } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/scripts/plugin-sync-kiro.mjs :30 } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/scripts/plugin-sync.mjs :6 import { cpSync, mkdirSync, existsSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/scripts/prepare-release.mjs :19 import { readFileSync, writeFileSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/scripts/sync-versions.mjs :6 import { readFileSync, writeFileSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/approval.test.ts :2 import { readFileSync, writeFileSync, rmSync, mkdirSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/backend-file.test.ts :2 import { mkdtempSync, rmSync, readFileSync, statSync, writeFileSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/canary.test.ts :2 import { mkdtempSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/config-schema.test.ts :2 import { mkdirSync, writeFileSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/entanglement-policy.test.ts :2 import { mkdirSync, writeFileSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/keyring-lifecycle.test.ts :2 import { mkdirSync, writeFileSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/linter.test.ts :3 import { writeFileSync, mkdirSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/memory.test.ts :2 import { readFileSync, writeFileSync, existsSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/observer-agent-label.test.ts :2 import { mkdtempSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/observer.test.ts :2 import { mkdtempSync, rmSync, readFileSync, writeFileSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/policy-root.test.ts :3 import { mkdirSync, writeFileSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/policy-secrets.test.ts :7 import { mkdirSync, writeFileSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/policy.test.ts :9 import { mkdirSync, writeFileSync, rmSync, utimesSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/push.test.ts :2 import { mkdtempSync, writeFileSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/registry-corruption.test.ts :9 } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/run.test.ts :2 import { mkdtempSync, writeFileSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/scan.test.ts :3 import { writeFileSync, mkdirSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/setup.test.ts :2 import { mkdtempSync, mkdirSync, writeFileSync, readFileSync, existsSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/core/wrap.test.ts :2 import { mkdtempSync, rmSync } from "node:fs";
  • fs (weak) I4cTime-q-ring-1227290/src/__tests__/utils/file-lock.test.ts :8 } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/cli/commands/audit.ts :9 import { writeFileSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/cli/commands/doctor.ts :2 import { existsSync, readFileSync, writeFileSync, rmSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/cli/commands/project.ts :13 import { writeFileSync, readFileSync, existsSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/approval.ts :15 import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/backend.ts :21 import { existsSync, readFileSync, writeFileSync, mkdirSync, chmodSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/collapse.ts :14 import { readFileSync, statSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/entanglement.ts :10 import { existsSync, writeFileSync, mkdirSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/hooks.ts :8 import { existsSync, writeFileSync, mkdirSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/import.ts :5 import { readFileSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/linter.ts :9 import { readFileSync, writeFileSync, existsSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/memory.ts :16 import { existsSync, readFileSync, writeFileSync, mkdirSync, chmodSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/observer.ts :24 } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/policy.ts :9 import { statSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/run.ts :14 import { existsSync, readFileSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/scan.ts :9 import { readFileSync, readdirSync, statSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/core/setup.ts :11 import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/hooks/precommit.ts :12 import { existsSync, writeFileSync, chmodSync, readFileSync, unlinkSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/utils/file-lock.ts :7 } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/utils/registry.ts :1 import { existsSync, readFileSync, renameSync } from "node:fs";
  • fs I4cTime-q-ring-1227290/src/version.ts :1 import { readFileSync } from "node:fs";

shell / exec 12

  • shell (weak) I4cTime-q-ring-1227290/scripts/build-mcpb.mjs :19 import { execSync } from "node:child_process";
  • shell (weak) I4cTime-q-ring-1227290/scripts/prepare-release.mjs :20 import { execSync } from "node:child_process";
  • shell (weak) I4cTime-q-ring-1227290/src/__tests__/core/notify.test.ts :5 const actual = await importOriginal<typeof import("node:child_process")>();
  • shell (weak) I4cTime-q-ring-1227290/src/__tests__/core/push.test.ts :13 const actual = await importOriginal<typeof import("node:child_process")>();
  • shell I4cTime-q-ring-1227290/src/cli/commands/tooling.ts :192 const { exec } = await import("node:child_process");
  • shell I4cTime-q-ring-1227290/src/core/collapse.ts :13 import { execSync } from "node:child_process";
  • shell I4cTime-q-ring-1227290/src/core/exec.ts :12 import { spawn } from "node:child_process";
  • shell I4cTime-q-ring-1227290/src/core/hooks.ts :11 import { execFile, spawn } from "node:child_process";
  • shell I4cTime-q-ring-1227290/src/core/notify.ts :15 import { spawn } from "node:child_process";
  • shell I4cTime-q-ring-1227290/src/core/provision.ts :8 import { execFileSync, spawnSync } from "node:child_process";
  • shell I4cTime-q-ring-1227290/src/core/push.ts :15 import { spawnSync } from "node:child_process";
  • shell I4cTime-q-ring-1227290/src/hooks/precommit.ts :11 import { execSync } from "node:child_process";

network 6

  • net (weak) I4cTime-q-ring-1227290/src/__tests__/core/dashboard-server.test.ts :22 const res = await fetch(`${base}/`);
  • net I4cTime-q-ring-1227290/src/core/dashboard-client.ts :5 JSON.parse(g):g)}catch{}},[]),y=he(()=>{fetch(\"/api/status\"+fe,{cache:\"no-store\"}).then(g=>g.json()).then(h).catch(()=>{})},[h]);ee(()=>{let g=new EventSource(\"/events\"+fe);return g.onopen=()=>a
  • net I4cTime-q-ring-1227290/src/core/dashboard.ts :8 import { createServer, type IncomingMessage, type ServerResponse, type Server } from "node:http";
  • net I4cTime-q-ring-1227290/src/core/ssrf.ts :11 import { isIPv4, isIPv6 } from "node:net";
  • net I4cTime-q-ring-1227290/src/dashboard-client/main.js :636 fetch("/api/status" + Q, { cache: "no-store" }).then((r) => r.json()).then(applySnap).catch(() => {});
  • net I4cTime-q-ring-1227290/src/utils/http-request.ts :6 import { request as httpsRequest } from "node:https";

secrets 3

  • secrets (weak) I4cTime-q-ring-1227290/src/__tests__/core/run.test.ts :135 args: ["-e", "console.log('token is ' + process.env.INJECTED_TOKEN)"],
  • secrets I4cTime-q-ring-1227290/src/core/linter.ts :5 * optionally rewrites them with `process.env.KEY` references, storing the
  • secrets I4cTime-q-ring-1227290/src/mcp/tools/tooling.ts :131 "[scan] Inspect a specific list of files for hardcoded secrets and, when `fix` is true, replace each finding with `process.env.KEY` while storing the extracted value into the keyring.",

tool registrations 44

  • agent_remember I4cTime-q-ring-1227290/src/mcp/tools/agent.ts :7
  • agent_recall I4cTime-q-ring-1227290/src/mcp/tools/agent.ts :35
  • agent_forget I4cTime-q-ring-1227290/src/mcp/tools/agent.ts :68
  • audit_log I4cTime-q-ring-1227290/src/mcp/tools/audit.ts :15
  • detect_anomalies I4cTime-q-ring-1227290/src/mcp/tools/audit.ts :81
  • health_check I4cTime-q-ring-1227290/src/mcp/tools/audit.ts :108
  • verify_audit_chain I4cTime-q-ring-1227290/src/mcp/tools/audit.ts :173
  • export_audit I4cTime-q-ring-1227290/src/mcp/tools/audit.ts :190
  • register_hook I4cTime-q-ring-1227290/src/mcp/tools/hooks.ts :13
  • list_hooks I4cTime-q-ring-1227290/src/mcp/tools/hooks.ts :122
  • remove_hook I4cTime-q-ring-1227290/src/mcp/tools/hooks.ts :140
  • check_policy I4cTime-q-ring-1227290/src/mcp/tools/policy.ts :14
  • get_policy_summary I4cTime-q-ring-1227290/src/mcp/tools/policy.ts :67
  • check_project I4cTime-q-ring-1227290/src/mcp/tools/project.ts :11
  • env_generate I4cTime-q-ring-1227290/src/mcp/tools/project.ts :92
  • detect_environment I4cTime-q-ring-1227290/src/mcp/tools/project.ts :156
  • get_project_context I4cTime-q-ring-1227290/src/mcp/tools/project.ts :187
  • get_secret I4cTime-q-ring-1227290/src/mcp/tools/secrets.ts :29
  • list_secrets I4cTime-q-ring-1227290/src/mcp/tools/secrets.ts :73
  • set_secret I4cTime-q-ring-1227290/src/mcp/tools/secrets.ts :150
  • delete_secret I4cTime-q-ring-1227290/src/mcp/tools/secrets.ts :261
  • has_secret I4cTime-q-ring-1227290/src/mcp/tools/secrets.ts :289
  • export_secrets I4cTime-q-ring-1227290/src/mcp/tools/secrets.ts :313
  • import_dotenv I4cTime-q-ring-1227290/src/mcp/tools/secrets.ts :362
  • inspect_secret I4cTime-q-ring-1227290/src/mcp/tools/secrets.ts :421
  • generate_secret I4cTime-q-ring-1227290/src/mcp/tools/secrets.ts :483
  • entangle_secrets I4cTime-q-ring-1227290/src/mcp/tools/secrets.ts :554
  • disentangle_secrets I4cTime-q-ring-1227290/src/mcp/tools/secrets.ts :623
  • teleport_pack I4cTime-q-ring-1227290/src/mcp/tools/teleport.ts :14
  • teleport_unpack I4cTime-q-ring-1227290/src/mcp/tools/teleport.ts :61
  • exec_with_secrets I4cTime-q-ring-1227290/src/mcp/tools/tooling.ts :15
  • scan_codebase_for_secrets I4cTime-q-ring-1227290/src/mcp/tools/tooling.ts :95
  • lint_files I4cTime-q-ring-1227290/src/mcp/tools/tooling.ts :128
  • analyze_secrets I4cTime-q-ring-1227290/src/mcp/tools/tooling.ts :176
  • status_dashboard I4cTime-q-ring-1227290/src/mcp/tools/tooling.ts :229
  • agent_scan I4cTime-q-ring-1227290/src/mcp/tools/tooling.ts :264
  • tunnel_create I4cTime-q-ring-1227290/src/mcp/tools/tunnel.ts :12
  • tunnel_read I4cTime-q-ring-1227290/src/mcp/tools/tunnel.ts :50
  • tunnel_list I4cTime-q-ring-1227290/src/mcp/tools/tunnel.ts :78
  • tunnel_destroy I4cTime-q-ring-1227290/src/mcp/tools/tunnel.ts :111
  • validate_secret I4cTime-q-ring-1227290/src/mcp/tools/validation.ts :21
  • list_providers I4cTime-q-ring-1227290/src/mcp/tools/validation.ts :60
  • rotate_secret I4cTime-q-ring-1227290/src/mcp/tools/validation.ts :81
  • ci_validate_secrets I4cTime-q-ring-1227290/src/mcp/tools/validation.ts :122

install hooks 1

  • prepublishOnly I4cTime-q-ring-1227290/package.json :36 pnpm run build && pnpm run sync-versions

declared dependencies 17

  • @modelcontextprotocol/sdk@^1.29.0
  • @napi-rs/keyring@^1.3.0
  • commander@^15.0.0
  • ipaddr.js@^1.9.1
  • zod@^4.4.3
  • @eslint/js@^10.0.1
  • @types/node@^26.1.1
  • esbuild@^0.28.1
  • eslint@^10.7.0
  • htm@^3.1.1
  • preact@^10.29.7
  • prettier@^3.9.5
  • tsup@^8.5.1
  • typescript@^5.9.3
  • typescript-eslint@^8.63.0
  • vite@8.1.4
  • vitest@^4.1.10