pitbridge@0.2.2
CAUTION· not startedPublisher claims: "Local-first, guardrailed MCP bridge for NinjaTrader 8, with hard risk limits your AI agent cannot bypass." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Not started: dependency install failed; the server itself was not observed.- Tested
- the dependency install step · every file read, file written and host contacted by what ran
- Not tested
- server startup · the tool list · tool behavior
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
- no credential variables read in the code
- Where it talks to
- pitbridge.com (its own)
- What the honeypot saw
- no credential files read · no network
- What we could not test
- server startup · the tool list · tool behavior
Connect it under the guard. Not started: dependency install failed; the server itself was not observed. The code names no credential variable and talks to pitbridge.com, its own; the guard pins the network to what the honeypot saw and logs every call.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-13 and scored it 78/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Prompting user to enter sensitive credentials. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
kill = KillSwitch(kill_file or default_kill_file())Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# (kill / schema / permission / guardrails). This is a second, independentFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Permission modes + arm-live ritual + kill switch state.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""kill OFF, mode=live (would be LIVE_NOT_ARMED), valid guardrails -> stillFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Render a human overview: mode, kill state, link/halt state, open orders."""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell." [WARN] kill switch: ENGAGED (all order flow blocked until `pitbridge unkill`)"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."kill switch engaged: all order flow blocked (unkill is CLI-only)",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.tool that releases the kill switch, arms live trading, or mutates config /Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.re-runs against a fresh snapshot (kill + sticky-halt + link-down + everyFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.after the kill switch (before any risk math):Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.deliberately absent (CLI-only); kill MAY be triggered here.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."KILL_SWITCH": "kill switch engaged (file / CLI / REST); release is CLI-only",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.f" kill : {'ENGAGED' if kill_engaged else 'released'}"]Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."release the kill switch, arm live trading, or change any guardrail/config "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.refuse a denied account BEFORE anything else (kill / schema / permission /Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.assert d.kill_switch.engaged is False # kill is OFFFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# FIX 2: de-risking bypasses the risk guardrails + kill + halt (correct —Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""File-backed kill switch. Presence of the file = engaged, so a humanFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill = self.kill_switch.engaged if self.kill_switch is not None else FalseFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.mcp_server.streamable_http_app() # lazily builds the session managerFix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.# Deny prevails over EVERYTHING (kill switch / permission / guardrails): aFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.`pitbridge.guardrails.registry` (kill switch always first). EveryFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sees the boolean on the account snapshot; reading the kill file is theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.(12 guardrails, 11 modules — position_caps carries two): kill switch, linkFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.Reads static config + the kill file locally, and enriches with live link /Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.Nothing is written for you: paste the token into your config yourself.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.kill = KillSwitch(default_kill_file())Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# kill MAY be triggered over REST; un-kill is CLI-only and has no route.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.pipeline, before kill / schema / permission / guardrails. A denied account mayFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.h.d.kill_switch.engage("kill on")Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.reason_code), NOT a raised exception that would kill the session.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.(c) no MCP tool can un-kill or arm live trading;Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.engaged kill / halt.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill + halt, but MUST still respect the mode gate: a read_only account (incl.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."reason_code": "KILL_SWITCH", "detail": "kill engaged"}Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# there is no un-kill route (CLI-only)Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.boundary, block case; precedence (kill switch beats everything) and registryFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# kill trips while the operator deliberatesFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# and deny also wins when the kill IS engaged (both directions).Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# -------- kill switchFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.A kill / sticky day-halt / link-down that engages *during* the ≤60 s confirmFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.assert "ENGAGED" in text # kill state surfacedFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# De-risking must still work under a kill for a paper/live account.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# ------------------------------------ (d) mixed sequence under kill / haltFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# kill is engaged: a new order is blocked and there is no tool to lift itFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.plugin is installed. `status` must render a useful overview from config + killFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# every other guardrail would also fire; kill switch must winFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# kill remains engaged after the whole session (agent could not release it)Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for pitbridge@0.2.2 as of 26 h ago. This is the package itself, not its dependencies.
What would make this Verified
2 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Prompting user to enter sensitive credentials≈ +9 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Unclaimed publisher≈ +8 on the totalClaim toolstackvault: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- MCP server using network transport (SSE/HTTP)≈ +2 on the totalNamespace tool names and keep tool descriptions literal; no instructions to the agent inside them.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.