Tecmie · Independent Security Review

Robin Enterprise

Independent verification of an internal, AI-assisted security assessment — issued under Tecmie's name, grounded in our own source review and live reproduction.

Subject: Robin Enterprise (withrobinhq/master.withrobin.ai)
Assessed baseline: 90c033b0 · Remediated baseline: 94610791
Deployment model: single organization per instance (confirmed), self-service organization creation disabled
Review dates: 2026-09-08 – 2026-09-09

Confidential. Contains unremediated-era exploit detail for Robin's own product. Keep to the agreed private channel; do not redistribute. The confidentiality markers shown in reproductions (FALCON, Meridian, ZEBRA) are synthetic test fixtures, not real client data.

1. Executive summary

Robin engaged Tecmie to independently verify an internal, AI-assisted security assessment of Robin Enterprise and to issue our own report. We reviewed all 27 findings against the source at both the assessed and remediated commits, reproduced the most serious ones against live instances, and formed our own view of severity. This report is our assessment, not a countersignature of Robin's.

We concur that the findings are real and that the remediations close them. One finding is a genuine High: an anonymous attacker could seize an invited account with no proof of mailbox control. The rest are authenticated-origin issues — a member or an organization administrator reading another workspace's private content or instance-wide data they should not see. Under the confirmed single-organization deployment, the workspace is the tenancy boundary, and several of these reads break the workspace-confidentiality guarantee the product is sold on. All 27 are fixed at 94610791, three with minor residuals noted below.

Where we differ from the internal assessment is severity, not facts. Robin's scoring multiplies any authenticated-origin finding by 0.2, which caps every insider finding at 4.4 and lands 21 of 27 as "Informational." We think that buries reads which cross a workspace boundary the product treats as a security boundary. We keep Robin's metric score for traceability and add a Tecmie severity for those findings, with rationale, in the register.

Outcome at a glance

Findings reviewed27
Independently reproduced by Tecmie (live)7  TEC-001, 003, 004, 005, 017, 018, 025
Concurred from source review only20
Open at 946107910
Closed with a noted residual3  TEC-011, 014, 019

Tecmie severity distribution

Robin's published distribution is 1 High / 1 Medium / 4 Low / 21 Informational. The difference is a re-rating on impact of five findings the origin multiplier held down — not new evidence — and it stays short of Critical because single-org gives no anonymous path to the insider reads.

2. Scope and method

In scope: the server-side application, workspace packages, and configuration at the two commits — authentication and session handling, the authorization and tenant-isolation layer, the MCP tool surface, background workers, the LLM boundary, data lifecycle, and dependency and configuration posture.

Out of scope / not independently verified: the Next.js frontend beyond the published-wiki render sink; third-party dependency internals beyond version and reachability; production infrastructure and runtime configuration; and the 16 findings we did not reproduce live (we concur from source review, stated per finding).

Method. Source review at both commits, verifying each finding's cited code path and each remediation line-for-line; then live reproduction of the High, the four cross-workspace reads, the related enumeration finding, and the anonymous chain, against a running pre-remediation instance and a freshly built, migrated, and seeded 94610791 instance.

Severity. Robin's metric is retained as the "Assessed score." Tecmie severity is assigned on business impact under the single-org model, diverging only where the metric's attack-origin multiplier collapses a real cross-workspace exposure to Informational.

3. What we reproduced

Against a live pre-remediation instance and a fresh 94610791 instance:

FindingPre-remediation, observedRemediated, observed
TEC-001email-only sign-up for an invited address → 200 + session (account seized)403; with the bound invitation id → 200 (legitimate invitee only)
TEC-017member denied the entry (403) but read its private signals (200): "Project Falcon Confidentiality Directive", "Meridian Dynamics Acquisition Details"404
TEC-018member → 200 on spend endpoints (instance-wide usage_events)403 on both
TEC-004member → 200 on /admin/graph/stats403
TEC-003diagnose → 200 returning a private board memo verbatimorg_admin (not a member) → 404
TEC-005not isolable on the shared instance (no stuck-signal precondition)org_admin dry-run → 200 count:0 with a stuck signal present
TEC-025legs open end to end from an anonymous startsevered at three points (403 / 403 / 404)

Two honest limits on the pre-remediation side. TEC-003 could not be isolated as an escalation live, because the only administrator available is a super-admin who reads the private entry directly regardless; the remediation is nonetheless shown cleanly with an org-admin returning 404. TEC-005's disclosure needs a stuck signal in a foreign workspace, which we did not seed into a shared instance; its fix is confirmed positively on the fresh stack. Neither limit affects the remediation verdict.

4. Severity, and why we re-rated five findings

The product partitions an organization's knowledge into workspaces and enforces per-workspace membership; private workspaces keep board, HR, or deal material away from other members. Under single-org, a workspace is the security boundary that matters, and a member or admin reading across it is a real breach of the product's promise — even though no external attacker can reach it without an account. Robin's metric assigns such findings Attack Origin "Specific" (×0.2), which caps them at 4.4 and lands them at Informational. We rate on impact:

We concur with Robin on the remaining insider findings and did not raise them; the critique is that the model buries the significant cross-workspace reads, not that every authenticated-origin item deserves a higher band. Nothing is raised to Critical: single-org removes the anonymous path that would make these arbitrary-origin. TEC-001 remains the single High on its own merits.

A fair counter-view: under a strict external-attacker threat model, insider findings are correctly low and Robin's bands are defensible. We give it weight, but the product is sold on workspace confidentiality, so we rate the cross-workspace reads on that promise and state the trade-off rather than hide it.

5. Remediation status

All 27 findings are closed at 94610791. Three carry residuals that Robin disclosed and we confirmed — non-blocking follow-ups:

The two items open at Robin's first remediation pass — a 500 regression on aggregate spend (TEC-018) and a backlinks name leak (TEC-012) — are both fixed at 94610791, which we confirmed.

6. Findings register

Every finding, with Robin's metric score, Tecmie severity, verification method, and status. marks a Tecmie raise above the metric.

IDTitleAssessedTecmieVerifiedStatus
TEC-001Anonymous pre-registration of an invited email seizes the accountHigh 7.6HighreproducedFixed
TEC-003Diagnose route returns any entry + signals, no workspace scopeLow 2.1Medium reproducedFixed
TEC-018Spend endpoints return instance-wide usage_events to any memberInfo 1.3Medium reproducedFixed
TEC-017Entry-signals route lists another workspace's signals, no scopeInfo 1.3Medium reproducedFixed
TEC-025Chain: anonymous seizure → cross-workspace signals + usageMed 4.8MediumreproducedResolved
TEC-015Client IP taken from left-most X-Forwarded-For, forgeableLow 3.2LowsourceFixed
TEC-004Graph-stats exposes instance-wide aggregates to any userInfo 0.7Low reproducedFixed
TEC-005Retry-stuck enumerates PENDING signals across workspacesInfo 0.4Low reproducedFixed
TEC-023Chain: org admin enumerates then reads private-workspace contentLow 2.1LowsourceResolved
TEC-026Chain: anonymous org-admin invite seizure → any private contentLow 3.4LowsourceResolved
TEC-006MCP write authority on a 4-char passcode, no rate limit, oracleInfo 0.9InfosourceFixed
TEC-012Signal-relationship backfill links signals across workspacesInfo 1.1InfosourceFixed
TEC-027Chain: anonymous seizure → MCP write as member, unattributedInfo 1.9InfosourceResolved
TEC-022Chain: member harvests keys → enumerates signals across workspacesInfo 1.3InfosourceResolved
TEC-008MCP set_auto_accept_persons behind a weaker gate than HTTPInfo 0.8InfosourceFixed
TEC-007MCP confused deputy: authorized vs attributed identity splitInfo 0.4InfosourceFixed
TEC-020Unescaped organization name injects HTML into invite/reset emailsInfo 0.7InfosourceFixed
TEC-024Chain: org admin sends attacker-authored mail from verified senderInfo 0.7InfosourceResolved
TEC-019Native better-auth org endpoints bypass app controls and auditInfo 0.7InfosourceFixed (residual)
TEC-009MCP write-tool invocations emit actorless audit rowsInfo 0.5InfosourceFixed
TEC-010Classifier model-emitted domainId written cross-workspaceInfo 0.5InfosourceFixed
TEC-014Bulk export and self-service erasure write no audit recordInfo 0.5InfosourceFixed (residual)
TEC-013Capture-upload gate authorizes against a caller-asserted org labelInfo 0.4InfosourceFixed
TEC-002Member/invitation passcode written to application logs in cleartextInfo 0.3InfosourceFixed
TEC-011Handlebars allowlist bypassed for structure fields at regenInfo 0.2InfosourceFixed (residual)
TEC-021Chain: application-log reader gains MCP write authority as a memberInfo 0.7InfosourceResolved
TEC-016Branch-protection rulesets require a check no workflow emitsInfo 0.1InfosourceFixed

7. Limitations of this review

Tecmie independent review. Verdicts reflect Tecmie's own source review at the two commits and live reproduction on 2026-09-08–09. Reproduction transcripts and the runbook that produced them are held with the reproduction package. This document does not cover runtime configuration, production infrastructure, or organisational processes except where evidenced in the repository.