Announcing Beacon: Self-improving memory for coding agents
← All MCP servers
MCP server

AI Workstation Open Source Intelligence

mcp:zxhwolfe-dev/aiworkstation-open-source-intelligence

Read-only AI project discovery, verification, comparison, shortlisting, and stack planning.

Verdict
Suspicious

Risky behavior the analysis could not rule out.

Analyzed Oct 26, 2026, 13:25 UTC at 73ada4a

Dispute security verdict

If you believe this verdict is incorrect, submit a dispute and we'll review it.

2
findings
medium
highest severity
2
threat classes
169
files scanned
1,772/1,772
checks satisfied
0
package advisories

Why this verdict

mcp-server . Suspicious
  • suspicious: finding mcp-server:.:.github/workflows/release.yml:1:SUPPLY
  • suspicious: finding mcp-server:.:docs/QUICKSTART.md:44:PRIVESC
skill skills/ai-open-source-intelligence No issues found
  • benign: 57 checks satisfied, no findings for skill:skills/ai-open-source-intelligence

Security findings 2

Supply chain

mediumContextual risklow confidence

The release workflow publishes to PyPI using a third-party GitHub Action pinned to a mutable branch ref (release/v1) rather than a commit SHA, so upstream changes would run with id-token write permission.

jobs.pypi-publish-and-verify.steps[6].uses: pypa/gh-action-pypi-publish@release/v1
vector:code
Counter-argument considered

The PyPI publish step uses a mutable branch ref with id-token write permission. This is a real, if low-severity, supply-chain weakness. No carve-out or mitigation in the workflow neutralizes it, though the step is gated by environment approval and validation.

Privilege escalation

lowContextual risklow confidence

Docs instruct users to add a Codex MCP server config with default_tools_approval_mode = "auto", which skips per-call tool approval prompts for the remote MCP (tools are declared read-only).

default_tools_approval_mode = "auto"
vector:instruction
Counter-argument considered

The docs tell users to auto-approve tools from the project's own hosted MCP. The server is documented as public, data-only and read-only, so auto-approval grants no meaningful extra capability. The quoted-evidence argument for a refutation is weak, so I am not refuting; harm is not strongly supported either.

Refuted findings 4

Candidates the review stage examined and rejected, kept for transparency.

Code execution

criticalRefutedlow confidence

The acceptance runner launches an external Codex binary as a subprocess with a full copy of the parent process environment, so any tokens in the environment are inherited by that child process; it is the declared acceptance-test purpose and no exfiltration sink is visible here.

env=os.environ.copy(),
Why it was refuted

Launching the user-resolved Codex binary is the declared purpose of the acceptance runner. It runs no third-party repository code, and the inherited environment goes only to that child with no exfiltration sink. The harm gate fails.

Credential access

highRefutedlow confidence

The acceptance runner passes the entire parent process environment to the spawned codex subprocess; this is plausibly needed for Codex auth and the child is the user's own codex binary, but it is a broad env passthrough.

env=os.environ.copy(),
Why it was refuted

env=os.environ.copy() is equivalent to the default inheritance for a subprocess. The child is the user's own resolved codex binary, and no sink for the environment is visible. The harm gate fails.

Privilege escalation

mediumRefutedlow confidence

Manual Hosted MCP fallback writes ~/.codex/config.toml with auto-approval of all tools from a remote server, disabling confirmation for tool calls.

default_tools_approval_mode = "auto"
Why it was refuted

The optional manual config points at the project's own anonymous, data-only hosted MCP. Auto-approval of its nine documented read-only tools is user-opt-in and adds no privilege, so the harm gate fails.

Privilege escalation

mediumRefutedlow confidence

The release-tooling Codex acceptance runner builds a codex exec command that sets approval_policy=never and auto-approves MCP tools, disabling approval prompts (undeclared in the product's read-only claims, though bounded by an ephemeral read-only sandbox and a documented test purpose).

f"approval_policy={_toml_string('never')}",
Why it was refuted

The command is a test-harness invocation of codex exec with an ephemeral read-only sandbox. Tool approval is limited to an explicit enabled_tools allowlist of the nine read-only tools, so approval_policy=never grants no escalation.

Coverage gaps 1

Parts of the artifact the static analysis could not fully examine.

dynamic_metadata line 162: server instructions are computed: str(instructions or SERVER_INSTRUCTIONS)
src/aiworkstation_osi/mcp_server.py