kebivo@0.3.0
CAUTION· install onlyPublisher claims: "An MCP server that lets AI agents report unanswered questions and submit knowledge corrections to a self-hosted feedback endpoint. Reports are grouped, deduplicated, and routed to documentation owners through an admin inbox, email, or signed webhooks." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
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
KEBIVO_BURST_TOKENKEBIVO_TOKENMCP_CORRECTION_TOKENMCP_GAP_TOKENMCP_TOKENSECRET_KEYUPGRADE_PASSWORDConfiguration, not credentials: E2E_CHROMIUM_PATH, ENCRYPTION_KEY, EXPECTED_EVENT_ID, FAIL_FIRST, HOLD_SECONDS, KEBIVO_URL, MCP_IDEMPOTENCY_KEY, MCP_MARKER, MCP_PROJECT_ID, MCP_URL, SAMPLE_IDEMPOTENCY_KEY, SMOKE_API, SMOKE_COOKIE_JAR, SMOKE_CSRF, SMOKE_DELIVERED_CANARY, SMOKE_DELIVERED_ID, SMOKE_EVENT_ID, SMOKE_EXPECTED_CALLS, SMOKE_FAIL_FIRST, SMOKE_HOLD_SECONDS, SMOKE_ORIGIN, SMOKE_RETRY_CANARY, SMOKE_RETRY_ID, SMOKE_UI_ORIGIN, UPGRADE_COLUMNS, UPGRADE_STATE, UPGRADE_URL- Where it talks to
- no vendor host named in the codeAlso example.org, slack.com, example.test, azure.example, astral.sh, unlisted.invalid — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- use of the skill by an agent
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names example.org, slack.com, example.test, azure.example, astral.sh, unlisted.invalid as well as its own vendor. The guard injects KEBIVO_BURST_TOKEN, KEBIVO_TOKEN, MCP_CORRECTION_TOKEN, MCP_GAP_TOKEN, MCP_TOKEN, SECRET_KEY, UPGRADE_PASSWORD only into requests to the host you bind (and its subdomains) and refuses the rest.
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 (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-14 and scored it 62/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: Access to sensitive file paths; Access to sensitive file paths; URL to the cloud instance metadata address. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
…<p className="subtle">Read-only. Change these values in the server environment (.env) and restart.</p></div></div><SettingsNav active="general" navigate={navigate}/…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.npx playwright test demo.spec.tsFix: Pin versions and sources; vendor anything fetched at install time.# bootstraps an admin, runs `npx playwright test` on the host against theFix: Pin versions and sources; vendor anything fetched at install time.…/div>)}</dl><p className="subtle">To change a period, set the variable in <code>.env</code> and restart. <code>0</code> turns that class off.</p> {!allOff&&…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."config": {"url": "http://169.254.169.254/secret-canary-path", "signing": False},Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const config = JSON.stringify({ mcpServers: { kebivo: { type: 'http', url: endpoint, headers: { Authorization: 'Bearer <PROJECT_TOKEN>' } } } }, null, 2);Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.: "https://hooks.slack.com/services/..."Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why."${compose[@]}" kill -s KILL app >/dev/nullFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.expect(init?.credentials).toBe('same-origin');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.self.send_header("Location", "http://169.254.169.254/latest/meta-data")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.{ mcpServers: { kebivo: { type: 'http', url: `${origin}/mcp`, headers: { Authorization: `Bearer ${TOKEN_PLACEHOLDER}` } } } },Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them."https://hooks.slack.com/services/T123/B456/secret",Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why."https://hooks.slack.com/services/T123/B456/secret";Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.expect(JSON.parse(config).mcpServers.kebivo.type).toBe('http');Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.npx playwright test screenshots.spec.tsFix: Pin versions and sources; vendor anything fetched at install time.secrets: { url: "https://hooks.slack.com/services/T123/B456/secret" },Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.npx playwright testFix: Pin versions and sources; vendor anything fetched at install time.Ordered routing rules, the fallback destination and the dry-run simulatorFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.Project page with the REST and MCP connection snippets (cURL tab)Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.check = subprocess.run(["python", "-m", "kebivo.cli", "check-groups"], capture_output=True, text=True, check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."${compose[@]}" kill -s KILL app >/dev/nullFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.expect(requests.every(({url,init})=>url.startsWith('/api/v1/')&&init?.credentials==='same-origin'&&!new Headers(init?.headers).has('Authorization'))).toBe(true);Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.subprocess.run(["python", "-m", "kebivo.cli", "check-groups"], capture_output=True, text=True, check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
18 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- URL to the cloud instance metadata address≈ +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 ocnai: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Hidden instructions≈ +6 on the totalRemove HTML comments, zero-width characters and white-on-white text that carry instructions. Everything the agent is meant to read should be visible to the person reading the file.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Slack webhook URL≈ +4 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.