Atlas / MCP servers / pedroknigge / arkgate

arkgateBLOCK

mcp/pedroknigge/arkgate

If the AI writes an illegal import, the write is rejected. The same check fails the pull request.

Verdict
BLOCK
Grade
F
Trust score
45 /100
Exposed tools
22 18r · 3w · 1d
Transport
stdio
License
MIT
Stars
1
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

When the agent writes a bad import, the write doesn’t land. The same check fails the pull request.

[](https://www.arkgate.online/) [](https://github.com/pedroknigge/arkgate/actions/workflows/ci.yml) [](https://www.npmjs.com/package/arkgate) [](LICENSE)

ArkGate is import rules for AI-written TypeScript. Contener · Guiar · Ordenar: contain what the AI may write, and in what shape. Guide the next step. Order leftover mess toward a clean tree, a little at a time.

Why

AI takes the shortest path. One bad import lands, then another, and the product gets harder to change. A linter that runs only after the agent finishes sees the mess too late.

Design the boundary before you implement. Put a small interface in front of the work and keep the detail behind it. When leftover mess remains, the honest light is needs a refactor. Weakening the rules to paint the check green leaves that design unfinished.

Try it

One command. Preview only — no files change. Current release is 4.8.25 (check npm latest with npm view arkgate version):

npx [email protected] start

What a red result looks like

After a rules file exists, a domain file that imports infrastructure fails the check (exit 1). This is real output from arkgate-check on [email protected]:

✖ LAYER_IMPORT_VIOLATION  src/domain/order.ts:1
DomainModel → Infrastructure  (src/infra/db.ts)
DomainModel must not import Infras
Read from source at commit 7eaaed6488ecOBSERVED · 2026-10-12
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add arkgate -- npx -y [email protected] mcp .
03

Exposed tools (22)

18 read · 3 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
AppreadApp shell, routing, providers, composition root.
ApplicationOrchestrationreadUse cases that coordinate the domain through ports. No I/O of its own.
DomainModelreadPure business rules and entities. No I/O, no framework, no ambient globals.
FeatureswriteFeature / use-case slices (co-located API, UI, hooks, types). No import across sibling slices.
LibreadInfrastructure clients (db, HTTP, env) shared across features.
PersistenceAdaptersreadImplements ports with real infrastructure: DB, external APIs, filesystem.
PresentationAdaptersreadEntrypoints — HTTP routes, controllers, UI. Drives use cases.
SharedreadReusable UI primitives, utils, and types with no feature knowledge.
SharedKernelreadTruly shared kernel types and primitives across contexts.
ark_checkwriteScan the project for architecture findings (layer-import violations, forbidden globals,
ark_coveragereadReport what each layer actually governs: per-layer file counts, the FULL list of
ark_identityreadFirst call. Prove this MCP process is the right project: pass project.expectedRoot
ark_manifestreadReturn the machine-readable architecture contract with an authoritative project
ark_placereadPlace a file in the architecture: filePath is required (fail-closed without it — never invents components/*.tsx or defaults to Presentation).
ark_policy_deltareadClassify a complete ark.config.json transition as strengthening, neutral,
ark_prepare_changedestructiveValidate one complete governed-source create/update/delete batch as an atomic in-memory candidate.
ark_prepare_writewritePrepare a write against the architecture contract: place (filePath required; fail-closed without it — never invents a path) +
ark_recommendreadScore this repository against templates/architecture-playbook.json and return the
ark_rules_inventoryreadDeterministic brownfield rules inventory (AR13): validation-in-controller, magic constants,
ark_statusreadUnified session/project status manifest (ACS03): project identity binding, honest write-path
ark_suggest_includereadPropose ark.config.json include roots from workspaces and nested TypeScript packages
validate_codereadSingle-file lexical check of a source snippet against Ark
04

Trust audit

BLOCKgrade F · trust 45/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryFAIL
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (12 observation(s))
Network
declared (8 observation(s))
Shell
declared (5 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHInventory / provenance · inv.suspicious_name · CWE-1104
bin/lib/mcp-hook-payload.mjs
mcp-hook-payload.mjs
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
scripts/verify-package-files.mjs:25
/id_rsa/i,
Why it matters. touches a credential store
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.agents/skills/ark-adopt
.agents/skills/ark-adopt
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.agents/skills/ark-architect
.agents/skills/ark-architect
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.agents/skills/ark-autopilot
.agents/skills/ark-autopilot
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.agents/skills/ark-contract
.agents/skills/ark-contract
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.agents/skills/ark-coverage
.agents/skills/ark-coverage
Why it matters. link not followed
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
bin/lib/dashboard-cli.mjs:8
export const DASHBOARD_DEFAULT_URL = 'http://127.0.0.1:3000/snapshot';
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
bin/lib/invariant-probe-runner.mjs:143
HTTP_PROXY: 'http://127.0.0.1:9',
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
bin/lib/invariant-probe-runner.mjs:144
HTTPS_PROXY: 'http://127.0.0.1:9',
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/eslint/jsonc.ts:30
const text = input.replace(/^/, '');
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/static-check/multiRepoSkills.test.ts:925
token: 'aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/static-check/multiRepoSkills.test.ts:1029
token: 'aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/static-check/multiRepoSkills.test.ts:1071
token: 'bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/static-check/skillInstallDirectCoverage.test.ts:521
token: '12345678-1234-4123-8123-123456789abc',
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
ark_prepare_change
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.jscpd.json
.jscpd.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
eval/cases/baseline-ratchet-new-debt/.ark-baseline.json
.ark-baseline.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.github/workflows/eval-nightly.yml:1
name: Eval (nightly)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.github/workflows/eval-nightly.yml:24
- name: Comparative eval (static oracle)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.github/workflows/eval-nightly.yml:27
- name: Placement A/B eval (ACS07 dry)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.github/workflows/eval-nightly.yml:55
- name: Live agent eval (optional — needs claude on PATH)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
bin/lib/codex-home.mjs:68
const hash = crypto.createHash('sha1').update(abs).digest('hex').slice(0, 8);
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
bin/lib/ts-resolve.mjs:136
.createHash('sha1')
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
eval/loop-cost-run.mjs:67
return createHash('sha1').update(buf).digest('hex');

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 7eaaed6488ecfull audit observations/trust-audit/mcp-server/pedroknigge__arkgate.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-127eaaed6488ecBLOCKF45first audit
06

Questions

What is the arkgate MCP server?

If the AI writes an illegal import, the write is rejected. The same check fails the pull request.

What tools does arkgate expose?

22 in total: 18 read-only, 3 that write, and 1 that can delete or overwrite (ark_prepare_change). Every one is listed on this page with its risk.

Is arkgate safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (45/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does arkgate need?

It reads GITHUB_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does arkgate run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @z03/kernel at 4.8.25.

How current is this page?

The grade is for one exact copy of the source (7eaaed6488ec), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement