Atlas / MCP servers / zzoretich / AgenticOS-Workbench

AgenticOS-WorkbenchBLOCK

mcp/zzoretich/agenticos-workbench

UniDeX Agent Harness: a second brain and supervised Chief of Staff for Claude Code and Codex CLI, with persistent memory, recall and session capture, plus proposals you approve before anything changes. Lives in a plain-Markdown vault, with the UniDeX macOS app as its live dashboard.

Verdict
BLOCK
Grade
F
Trust score
23 /100
Exposed tools
44 42r · 2w · 0d
Transport
stdio
License
MIT
Stars
3
01

Overview

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

A second brain for Claude Code and Codex CLI, and a macOS app that renders it. Persistent memory · recall · session capture · a named Chief of Staff · a live monitor of it all.

Quick start · Prerequisites · Installation · Screenshots · First session · Chief of Staff · Commands · How it works · Docs

Claude Code and Codex CLI forget everything between sessions. UniDeX gives them a vault they can read from on every prompt and write back to at the end of every session, then puts a dashboard on to

Read from source at commit ef5ca1801c0aOBSERVED · 2026-10-11
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
claude mcp add agenticos-workbench --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env APPLE_KEYCHAIN_PROFILE=${APPLE_KEYCHAIN_PROFILE} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "agenticos-workbench": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "APPLE_KEYCHAIN_PROFILE": "${APPLE_KEYCHAIN_PROFILE}"
      }
    }
  }
}
03

Exposed tools (44)

42 read · 2 write · 0 destructive.

ToolRiskDescription
DefaultreadClaude Code
ExplorereadFind the status bar code
FablereadThe latest Fable
GPT-AstrareadFrontier intelligence.
GPT-LunareadFast and affordable.
GPT-OldreadOlder.
GPT-SolreadWorkhorse.
GPT-Tide-2readThe previous generation.
GPT-Tide-3readThe newest tide model.
HaikureadThe latest Haiku
OpusreadThe latest Opus
SonnetreadThe latest Sonnet
areadfirst line second line
brief_readread
code-reviewreadReview the current diff
compactreadCompact the conversation
deploywriteShip the app
docs_researcherreadChecks APIs
docxreadWord documents
explorerreadExplores
feedback_rulesread
graph_neighborsread
graph_overviewread
graph_pathread
graph_queryread
imagegenreadImages
memory_listread
memory_readread
memory_searchread
my-modelreadCustom model id
pattern_listread
plannerreadPlans
pr_explorerreadMaps code paths
recallread
reviewreadReview the open changes
reviewerreadReviews diffs
routine_listread
session_listread
session_recallread
snapshot_readread
tide-reportwriteWrite the tide report
triagereadTriage issues
wrapreadSession end
wrap_sessionread
04

Trust audit

BLOCKgrade F · trust 23/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)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (13 observation(s))
Network
declared (10 observation(s))
Shell
declared (10 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
codex-plugin/skills/wrap/SKILL.md:44
2. **In-session extraction.** Use the `wrap` skill: review this conversation and call the `wrap_session` tool of the `agenticos` MCP server (`mcp__agenticos__wrap_session`) exactly once with `facts`,
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
plugin/commands/wrap.md:9
2. **In-session extraction.** Use the `wrap` skill: review this conversation and call the `wrap_session` tool of the `agenticos` MCP server (`mcp__plugin_agenticos_agenticos__wrap_session`) exactly on
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
HIGHInventory / provenance · inv.suspicious_name · CWE-1104
app/scripts/make-payload.mjs
make-payload.mjs
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHInventory / provenance · inv.suspicious_name · CWE-1104
app/src/main/setup/payload.ts
payload.ts
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
brain/scripts/lib/host-routines.js:130
out = exec(sqlite3, ['-readonly', '-json', db, CODEX_SQL], { encoding: 'utf8', timeout: 5000, stdio: ['ignore', 'pipe', 'pipe'] });
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
brain/scripts/sdk/lib/codex-cli.js:291
exec(bin, ['login', 'status'], { timeout: opts.timeoutMs || 10000, env: headlessEnv(), encoding: 'utf8' }, (err, stdout, stderr) => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
cli/cost-cmd.js:45
const r = bin ? exec(bin, ['--version'], { encoding: 'utf8' }) || {} : { error: new Error('AOS_PYTHON_BIN is empty') };
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
cli/graph-cmd.js:69
const r = exec(bin, ['--version'], { encoding: 'utf8', timeout: 30000, stdio: ['ignore', 'pipe', 'pipe'] });
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
cli/graph-cmd.js:161
const r = exec(uv, args, {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
app/scripts/smoke-packaged.mjs:115
const browser = await until(() => chromium.connectOverCDP(`http://127.0.0.1:${port}`, { timeout: 2_000 }), 30_000, 500);
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
app/scripts/smoke-packaged.mjs:249
const b2 = await until(() => chromium.connectOverCDP(`http://127.0.0.1:${port2}`, { timeout: 2_000 }), 30_000, 500);
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
app/src/main/policy/setup.ts:26
export const OLLAMA_URL = "http://127.0.0.1:11434";
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
brain/scripts/cost-budget.js:181
process.stdout.write(`  ${r.ts}  real $${r.realUsd}  Δreal $${r.realDelta ?? '—'}  Δanalyzer $${r.tgRawDelta ?? '—'}  derived ${r.derivedCalibration ?? '—'}\n`);
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitleaks.toml
.gitleaks.toml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
brain/scripts/test/fixtures/empty/.keep
.keep
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
vault-template/.graphifyignore
.graphifyignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
app/tests/e2e/spaces-writes.spec.ts:173
out.push(hash ? `${rel} ${createHash("sha1").update(fs.readFileSync(abs)).digest("hex")}` : rel);
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
brain/scripts/collectors/workspaces.js:389
return crypto.createHash('sha1').update(JSON.stringify(stable)).digest('hex').slice(0, 16);
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
brain/scripts/embed-vault.js:73
const hash = crypto.createHash('sha1').update(raw).digest('hex');
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
brain/scripts/lib/markers.js:13
const VAULT_KEY = crypto.createHash('sha1').update(PATHS.VAULT).digest('hex').slice(0, 8);
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
brain/scripts/lib/pulse-facts.js:200
const hash = crypto.createHash('sha1').update(JSON.stringify({ needsYou: needsYou.map(({ since, ...k }) => k), summary: hashed })).digest('hex').slice(0, 16);
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
app/tests/unit/main-policy.test.ts:40
for (const p of ["/etc/passwd", `${HOME}/.ssh/config`, `${HOME}/Documents/x.md`, `${VAULT}-other/x.md`, `${VAULT}/../x`, "relative/x", "", `${VAULT}/a\0b`,
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
app/tests/unit/main-policy.test.ts:61
for (const p of [`${HOME}/.codex/auth.json`, `${HOME}/.claude/.credentials.json`, `${VAULT}/workspaces/app/.env`, `${VAULT}/.env.local`, `${VAULT}/certs/server.pem`, `${VAULT}/id_ed25519`])
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
brain/scripts/test/workspace-draft.test.js:64
'id_ed25519': 'SSH-SECRET\n',
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
brain/scripts/test/workspace-draft.test.js:65
'id_rsa.pub': 'SSH-PUB-SECRET\n',
Why it matters. touches a credential store

Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.

Audited 2026-10-11 · audit v0.4.1 · source sha ef5ca1801c0afull audit observations/trust-audit/mcp-server/zzoretich__agenticos-workbench.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-11ef5ca1801c0aBLOCKF23first audit
06

Questions

What is the AgenticOS-Workbench MCP server?

UniDeX Agent Harness: a second brain and supervised Chief of Staff for Claude Code and Codex CLI, with persistent memory, recall and session capture, plus proposals you approve before anything changes. Lives in a plain-Markdown vault, with the UniDeX macOS app as its live dashboard.

What tools does AgenticOS-Workbench expose?

44 in total: 42 read-only, 2 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is AgenticOS-Workbench safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (23/100) and found 9 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does AgenticOS-Workbench need?

It reads ANTHROPIC_API_KEY and APPLE_KEYCHAIN_PROFILE 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 AgenticOS-Workbench run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as agenticos-workbench at 1.7.0.

How current is this page?

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

Advertisement