github JavaScript analyzed d1b52bf

subodhkc/ai-appsec

v0.1.0
github

Audit AI applications and agents for security risks before commit, PR, merge, or deployment. Deterministic findings with coverage and evidence receipts.

maintainer
subodhkc
licence
MIT
first seen
2026-08-21
last seen
2026-09-15
releases · 30d
5
short id

Drift inferred · capture-to-capture

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

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

tools

  • scan_ai_security
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit d1b52bf · analyzer v33 · 4w ago

skills & prompt files 1

danger signals1

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

code files: 104

filesystem 40

  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c1r-scans.ts :12 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-direct-vs-packaged.ts :12 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-direct-vs-tarball.ts :14 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-evidence-index.ts :8 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-full-forensics.ts :21 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-generate-evidence-index.ts :7 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-kestrel-qualification.ts :19 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-kestrel-three-run-determinism.ts :19 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-parser-error-classification.ts :14 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-semgrep-fingerprint.ts :6 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-three-run-determinism.ts :23 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-timeout-test.ts :15 import * as fs from 'node:fs';
show 28 more
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a2-cross-session-reproducibility.ts :17 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a2-direct-vs-tarball.ts :8 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a2-single-session.ts :10 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a3-direct-vs-tarball.ts :8 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a3-single-session.ts :8 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a4-1-complete-session.ts :9 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a4-1-direct-vs-tarball.ts :8 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a4-1-export-corpus.ts :6 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a4-1-kestrel-session.ts :8 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a4-complete-session.ts :8 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a4-direct-vs-tarball.ts :8 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/scripts/phase-4c-a4-kestrel-session.ts :8 import * as fs from 'node:fs';
  • fs subodhkc-ai-appsec-d1b52bf/src/cli/setup.ts :24 import * as fs from 'node:fs/promises';
  • fs subodhkc-ai-appsec-d1b52bf/src/engines/ai-security/coverage-collector.ts :19 import * as fs from 'node:fs';
  • fs subodhkc-ai-appsec-d1b52bf/src/engines/ai-security/rulepack-provider.ts :13 import * as fs from 'node:fs/promises';
  • fs subodhkc-ai-appsec-d1b52bf/src/engines/ai-security/semgrep-resolver.ts :26 import * as fs from 'node:fs/promises';
  • fs subodhkc-ai-appsec-d1b52bf/src/security/path-boundary.ts :14 import * as fs from 'node:fs/promises';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/tests/architecture/independence.test.ts :3 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/tests/engines/coverage-ontology.test.ts :4 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/tests/engines/no-telemetry.test.ts :6 import * as fs from 'node:fs/promises';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/tests/engines/process-tree.test.ts :119 const runnerSource = await fs.readFile(
  • fs (weak) subodhkc-ai-appsec-d1b52bf/tests/engines/rc6-rule-fixtures.test.ts :17 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/tests/engines/safe-execution.test.ts :6 import * as fs from 'node:fs/promises';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/tests/evals/phase4a-selection.test.ts :6 import { readFileSync } from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/tests/evals/scenarios.test.ts :3 import { readFileSync } from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/tests/mcp/packaged-stdio-e2e.test.ts :13 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/tests/mcp/stdio-e2e.test.ts :26 import * as fs from 'node:fs';
  • fs (weak) subodhkc-ai-appsec-d1b52bf/tests/security/path-boundary.test.ts :6 import * as fs from 'node:fs/promises';

shell / exec 13

  • shell (weak) subodhkc-ai-appsec-d1b52bf/scripts/c1r-scans.ts :43 const { execSync } = await import('node:child_process');
  • shell (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-direct-vs-packaged.ts :14 import { spawn } from 'node:child_process';
  • shell (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-direct-vs-tarball.ts :16 import { spawn } from 'node:child_process';
  • shell (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-kestrel-qualification.ts :21 import { execSync } from 'node:child_process';
  • shell (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-semgrep-fingerprint.ts :10 import { execSync } from 'node:child_process';
  • shell (weak) subodhkc-ai-appsec-d1b52bf/scripts/c2r-timeout-test.ts :17 import { execSync } from 'node:child_process';
  • shell subodhkc-ai-appsec-d1b52bf/src/cli/setup.ts :21 import { execFile, spawn } from 'node:child_process';
  • shell subodhkc-ai-appsec-d1b52bf/src/engines/ai-security/semgrep-resolver.ts :22 import { execFile } from 'node:child_process';
  • shell subodhkc-ai-appsec-d1b52bf/src/engines/ai-security/semgrep-runner.ts :13 import { spawn, type ChildProcess } from 'node:child_process';
  • shell (weak) subodhkc-ai-appsec-d1b52bf/tests/engines/process-tree.test.ts :11 import { spawn, execSync } from 'node:child_process';
  • shell (weak) subodhkc-ai-appsec-d1b52bf/tests/engines/rc6-rule-fixtures.test.ts :20 import { execFile } from 'node:child_process';
  • shell (weak) subodhkc-ai-appsec-d1b52bf/tests/engines/safe-execution.test.ts :16 assert.ok(content.includes('spawn('));
show 1 more
  • shell (weak) subodhkc-ai-appsec-d1b52bf/tests/mcp/packaged-stdio-e2e.test.ts :10 import { spawn, execSync } from 'node:child_process';

secrets 1

  • secrets (weak) subodhkc-ai-appsec-d1b52bf/tests/fixtures/complete-golden-corpus/src/app.js :26 const apiKey = process.env.OPENAI_API_KEY;

tool registrations 1

  • scan_ai_security subodhkc-ai-appsec-d1b52bf/src/mcp/server-factory.ts :91

declared dependencies 10

  • @modelcontextprotocol/server@2.0.0
  • @modelcontextprotocol/client@^2.0.0
  • canonicalize@4.0.0
  • zod@4.4.3
  • @eslint/js@10.0.1
  • @types/node@26.2.0
  • eslint@10.8.1
  • tsx@4.23.12
  • typescript@5.9.3
  • typescript-eslint@8.67.0