prjct-cliBLOCK
The agentic harness for AI coding agents — intelligence is rented, the harness is owned. Runs the full work cycle: intent briefs, bounded RAG context from real code intelligence, persistent memory, preventive guardrails, and performance evals. One CLI + MCP server, SQLite inside. Claude Code, Codex,
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
The agentic harness for AI coding agents. Intelligence is rented, the harness is owned. prjct-cli gives Claude Code, Codex, Gemini, Cursor, OpenCode — any agent — two things that are measured, not asserted:
- Machine-verified work, in any language.
prjct gauntletruns your
project's own verify commands and records a receipt bound to git HEAD; ship refuses a red one. The work counts when the machine says so, not when the agent says so. Commands are detected from the manifest you already have (npm/yarn/pnpm/bun · Cargo · Go · Python · Maven · Gradle · Ruby · PHP · .NET · Elixir · Makefile targets) — and for anything else, declare them:
prjct gauntlet set test "swift test"
- Lookup that beats re-deriving. Bounded, ranked project context (RRF over
BM25 + semantic, quality measured by prjct harness retrieval) instead of an agent re-reading the repo to rebuild what it already established.
Everything it claims is auditable from the CLI: prjct harness audit reports memory relevance and fails a threshold, prjct harness retrieval reports Recall@k/MRR/nDCG on a leak-free split.
[](https://www.npmjs.com/package/prjct-cli) [](./LICENSE) []() []() []()
Install / upgrade — one paste
Copy this prompt and paste it in Claude Code (works for fresh install AND upgrade — Claude picks YOUR package manager, doesn't force npm):
Install or upgrade prjct-cli on this machine. First detect which package manager I use globally (check `command -v pnpm`, `command -v bun`, `command -v yarn`, `command -v npm` in that order; also check where any existing `prjct` install lives via `command -v prjct`
d382e26f576cOBSERVED · 2026-10-12Connect
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 mcp add prjct-cli --env GEMINI_API_KEY=${GEMINI_API_KEY} --env GROK_API_KEY=${GROK_API_KEY} --env PRJCT_EMBEDDINGS_API_KEY=${PRJCT_EMBEDDINGS_API_KEY} --env PRJCT_TEST_KEY_PID=${PRJCT_TEST_KEY_PID} -- npx -y [email protected]{
"mcpServers": {
"prjct-cli": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"GEMINI_API_KEY": "${GEMINI_API_KEY}",
"GROK_API_KEY": "${GROK_API_KEY}",
"PRJCT_EMBEDDINGS_API_KEY": "${PRJCT_EMBEDDINGS_API_KEY}",
"PRJCT_TEST_KEY_PID": "${PRJCT_TEST_KEY_PID}"
}
}
}
}Exposed tools (26)
18 read · 7 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.
| Tool | Risk | Description |
|---|---|---|
Bash | read | native shell |
Repository | read | Data access |
api | read | API layer |
auth | read | Authentication + sessions |
bash | write | Run a short shell command in the project root (cwd fixed). Prefer read/edit/write for file changes. No network/sudo. |
billing | read | Stripe billing + invoices |
data | read | x |
deploy | write | Deploy to production |
deploy-local | write | remote metadata refresh |
edit | write | Replace an exact substring in a file once. Fails if old_string is missing or not unique. Surfaces preventive memory for the file when present. |
grok-build | read | Grok as Brain, prjct as Body: multi-host skill/MCP projection, plan-mode approval gate, crew checkpoints, and SQLite memory (Grok memory is experimental). Steal patterns from the open Grok Build harness — not the Rust agent loop. |
mcp__prjct__prjct_mem_save | write | save |
p1 | read | d1 |
prjct_guard | write | Anticipation: preventive memory for a file (gotchas/anti-patterns) before edit. Empty means clear to edit. |
prjct_remember | read | Persist a durable memory in ENGLISH (decision|learning|gotcha|fact|...). Use after resolving something non-obvious. |
prjct_search | read | Search durable project memory (decisions, gotchas, learnings). Prefer this before broad codebase exploration. |
prjct_work | write | Start a tracked prjct work cycle for an intent (same gates as |
qa | read | Quality assurance checks |
read | read | Read a UTF-8 text file under the project root. Path is relative to project root. |
repository | read | data access |
safe-agentic-workflow | read | A cautious build→review→ship rig: intent brief, dynamic review specialists, and a verify gate before ship. |
solo-sovereign | read | A single-agent rig for non-Claude / local models: emulated crew (one agent plays the roles) + a KB + verify gate. Maximum portability. |
test-wf | read | Test workflow |
validate-before-parse | read | Signatures checked before payload parse |
write | destructive | Create or overwrite a UTF-8 text file under the project root. Creates parent dirs. Prefer edit for small changes. |
x | read | d |
Trust audit
BLOCKgrade F · trust 52/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | FAIL |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (3 observation(s))
- Network
- declared (2 observation(s))
- Shell
- declared (4 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
analysis-payload-builder.ts
exec(sql: string): void
/^(?:\.env(?:\..+)?|.*\.(?:pem|key|p12|pfx)|id_rsa|id_ed25519|credentials\.json|auth\.json)$/i
ab-report.ts
name: 'system-prompt-exfil',
? ` · purged: hardΔ${v.softDeletedPurged ?? 0} distillΔ${v.distilledDiscarded ?? 0} digests+${v.digestsWritten ?? 0} archΔ${v.archivesPruned ?? 0}`: `Dream complete: archived=${phases.consolidate.archived} deleted=${phases.consolidate.deleted} inboxΔ=${inboxMerged + inboxArchived} · L0 index live=${index?.live ?? 0}`const TOKEN = '0123456789abcdef01234567'
const secret = 'customer-secret-should-never-persist'
write
.bun-version
analysis-payload-builder.test.ts
const cwd = createHash('sha1')const id = crypto.createHash('sha1').update(path.resolve(cliHome)).digest('hex').slice(0, 16)const key = createHash('sha1').update(path.resolve(projectPath)).digest('hex').slice(0, 16)const cwd = createHash('sha1').update(path.resolve(projectPath)).digest('hex').slice(0, 12)const argsKey = createHash('sha1')expect(() => resolveSafePath(root, 'secrets/id_rsa')).toThrow(PathDeniedError)
await write('deploy/id_rsa', PEM)expect(skippedPaths).toContain('deploy/id_rsa')import pathManager from '../../infrastructure/path-manager'
import { resetCircuitBreakers } from '../../utils/retry'import { bashCommandDenied, scrubbedChildEnv } from '../../agent/tools'import { saveLlmAnalysis } from '../../commands/analysis/llm'import configManager from '../../infrastructure/config-manager'
Gates applied: no_behavioural_pass.
d382e26f576cfull audit observations/trust-audit/mcp-server/prjct-app__cli.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | d382e26f576c | BLOCK | F | 52 | first audit |
Questions
What is the prjct-cli MCP server?
The agentic harness for AI coding agents — intelligence is rented, the harness is owned. Runs the full work cycle: intent briefs, bounded RAG context from real code intelligence, persistent memory, preventive guardrails, and performance evals. One CLI + MCP server, SQLite inside. Claude Code, Codex,
What tools does prjct-cli expose?
26 in total: 18 read-only, 7 that write, and 1 that can delete or overwrite (write). Every one is listed on this page with its risk.
Is prjct-cli safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (52/100) and found 3 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 prjct-cli need?
It reads GEMINI_API_KEY, GROK_API_KEY, PRJCT_EMBEDDINGS_API_KEY, PRJCT_TEST_KEY_PID and XAI_API_KEY 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 current is this page?
The grade is for one exact copy of the source (d382e26f576c), read on 2026-10-12. The repository is watched and re-audited when it changes.