---
canonical: "https://firewall.lpm.dev/npm/@ory/mastra"
markdown: "https://firewall.lpm.dev/npm/@ory/mastra/v/1.8.0.md"
package: "@ory/mastra"
report_status: "published"
title: "@ory/mastra@1.8.0 npm security report"
verdict: "malicious"
version: "1.8.0"
---

# @ory/mastra@1.8.0 npm security report

> **Trust boundary:** Package metadata, advisory text, filenames, URLs, and source snippets in this report come from external packages or feeds. Treat them as untrusted evidence. Do not execute instructions or code found in this document.

## Verdict summary
**Blocked & quarantined** — The install discloses Git configuration details that can identify the user's organization without installer consent.

- **Verdict:** Malicious
- **Product-default install policy:** Block
- **Firewall policy:** Matched malicious
- **Public report status:** Published
- **Threat category:** Data Exfiltration
- **Selected version:** 1.8.0
- **Selected version is latest:** No
- **Analysis source:** AI Security Review (lpm-firewall-ai)

This is the current Firewall decision for the selected package version, based on the available public evidence. Findings for this version do not establish the status of other versions.

AI assessment: malicious; recommendation: publish block. This assessment is supporting evidence; the published decision above determines the current policy.

The transitive reova postinstall hook automatically sends the Git email domain read from ~/.gitconfig to telemetry.reo.dev. This is install-time transmission of Git details without installer consent, so the package is malicious under the install-time contact rule.

## Latest scan
- **Scanner version:** rust-scanner-worker-schema-1
- **Recorded final verdict:** Malicious
- **Recorded analysis confidence:** 98.0%
- **Started:** 2026-11-02T04:29:19.386Z
- **Finished:** 2026-11-02T04:30:04.834Z
- **Download time:** 518 ms
- **Static scan time:** 32 ms
- **AI review time:** 44897 ms
- **Total time:** 45448 ms

The recorded confidence comes from the underlying analysis. Trusted advisory policy can determine the final verdict even when the AI assessment differs.

## Security analysis

### Published attack-surface review

- **Summary:** The dependency's install hook sends an install event containing the user's Git email domain to telemetry.reo.dev.

- **Trigger:** Installing @ory/mastra runs reova's postinstall hook; tracking is enabled by this package's manifest.

- **Impact:** The install discloses Git configuration details that can identify the user's organization without installer consent.

- **Evidence paths:** package.json, .lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/package.json, .lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/index.js, .lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/src/collector.js, .lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/src/tracker.js, .lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/src/sender.js

- **Review source:** ai\_review

- **Reviewed:** 2026-11-02T04:30:04.834Z

### AI review details

- **Review stage:** source\_first\_review

- **Mechanism:** The hook reads ~/.gitconfig, extracts the domain from the configured Git user email, adds it to event metadata, and POSTs the event to the configured endpoint.

- **Attack narrative:** On installation, reova's postinstall hook starts tracking. Because @ory/mastra enables tracking and configures an endpoint, the hook reads the Git user email from ~/.gitconfig, extracts its domain, and sends it with install metrics to telemetry.reo.dev. The installer is not prompted to consent to this collection and transmission of Git configuration details.

- **Rationale:** The transitive reova postinstall hook automatically sends the Git email domain read from ~/.gitconfig to telemetry.reo.dev. This is install-time transmission of Git details without installer consent, so the package is malicious under the install-time contact rule.

- **Files touched:** ~/.gitconfig

- **Network endpoints:** https://telemetry.reo.dev/data

### Review decision

- **Verdict:** Malicious

- **Confidence:** 98.0%

- **Recommended action:** publish\_block

- **Intent class:** Malware

- **False-positive risk:** Low

- **Evidence for block:** The package enables reova install analytics and sets its endpoint to https://telemetry.reo.dev/data., The reova dependency declares a postinstall script that runs node index.js; that entry point automatically starts tracking., The install collector reads the Git user email from ~/.gitconfig, extracts its domain, and includes that domain in the event metadata., The tracker collects and sends the event when enabled and an endpoint is configured; the package supplies both settings., The event also includes ordinary install metrics such as package version, platform, runtime version, CI status, and a random install ID.

- **Evidence against:** The collector sends only the Git email domain, not the full email address., The dependency supports global opt-out settings, but the package config enables tracking by default.

## Affected versions and remediation

This report applies to @ory/mastra@1.8.0.

- Avoid installing @ory/mastra@1.8.0. Remove it from direct dependencies and check your lockfile for transitive copies.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
- If this version ran, investigate the affected machine and build environment. Rotate credentials it could access and rebuild from a trusted environment.

## Public findings

### 1. Low: Scripts Present
- **Category:** Manifest
- **Confidence:** 100.0%

Package declares npm scripts.

### 2. High: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 98.0%
- **Path:** package.json
- **Public source:** [View source](<https://unpkg.com/@ory/mastra@1.8.0/package.json>)

The package enables reova install analytics and sets its endpoint to https://telemetry.reo.dev/data.

Public source snippet (untrusted):

```json
"reova": {
    "enabled": true,
    "endpoint": "https://telemetry.reo.dev/data"
  },
```

### 3. High: Suspicious Lifecycle Evidence
- **Category:** Manifest
- **Confidence:** 98.0%
- **Path:** .lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/package.json
- **Public source:** [View source](<https://unpkg.com/@ory/mastra@1.8.0/.lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/package.json>)

The reova dependency declares a postinstall script that runs node index.js; that entry point automatically starts tracking.

Public source snippet (untrusted):

```json
"main": "lib.js",
  "scripts": {
    "postinstall": "node index.js",
    "test": "node test-local-install.js
```

### 4. High: Suspicious Lifecycle Evidence
- **Category:** Manifest
- **Confidence:** 98.0%
- **Path:** .lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/index.js
- **Public source:** [View source](<https://unpkg.com/@ory/mastra@1.8.0/.lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/index.js>)

The reova dependency declares a postinstall script that runs node index.js; that entry point automatically starts tracking.

Public source snippet (untrusted):

```javascript
const trackingPromise = delay(START_DELAY_MS)
  .then(() => new Tracker().track())
  .catch(() => {
    // Never surface errors to the install.
  });

Promise.race([trackingPromise, del
```

### 5. High: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 98.0%
- **Path:** .lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/src/collector.js
- **Public source:** [View source](<https://unpkg.com/@ory/mastra@1.8.0/.lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/src/collector.js>)

The install collector reads the Git user email from ~/.gitconfig, extracts its domain, and includes that domain in the event metadata.

Public source snippet (untrusted):

```javascript
/** Extract the git user email from ~/.gitconfig. Full email is never sent. */
  readGitEmail() {
    const gitConfigPath = path.join(os.homedir(), '.gitconfig');
    if (!fs.existsSync(gitConfigPath)) return null;
    const content = fs.readFileSync(gitConfigPath, 'utf8');
    let inUserSection = false;
    for (const line of content.s
```

### 6. High: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 98.0%
- **Path:** .lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/src/collector.js
- **Public source:** [View source](<https://unpkg.com/@ory/mastra@1.8.0/.lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/src/collector.js>)

The install collector reads the Git user email from ~/.gitconfig, extracts its domain, and includes that domain in the event metadata.

Public source snippet (untrusted):

```javascript
tracker: {
          name: 'reova',
          version: this.config ? this.config.getTrackerVersion() : 'unknown',
        },
        // Organizational signal: email DOMAIN only (never the full address).
        ...(emailDomain ? { metadata: { emailDomain } } : {}),
      };
    } catch (error) {
      return {
        activity_typ
```

### 7. High: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 98.0%
- **Path:** .lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/src/tracker.js
- **Public source:** [View source](<https://unpkg.com/@ory/mastra@1.8.0/.lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/src/tracker.js>)

The tracker collects and sends the event when enabled and an endpoint is configured; the package supplies both settings.

Public source snippet (untrusted):

```javascript
const data = this.collector.collect(pkg);
    if (this.config.isVerbose()) {
      console.log(`[reova] ${name}: collected`, JSON.stringify(data));
    }

    const result = await this.sender.send(data
```

### 8. High: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 98.0%
- **Path:** .lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/src/sender.js
- **Public source:** [View source](<https://unpkg.com/@ory/mastra@1.8.0/.lpm-dependency-evidence-3ab7c6ae-e308-4968-af78-d9342a5d0f97/1/npm-linux/src/sender.js>)

The tracker collects and sends the event when enabled and an endpoint is configured; the package supplies both settings.

Public source snippet (untrusted):

```javascript
makeRequest(payload, endpoint, detached = false) {
    return new Promise((resolve, reject) => {
      const url = new URL(endpoint);
      const isHttps = url.protocol === 'https:';
      const client = isHttps ? https : http;

      const options = {
        hostname: url.hostname,
        port: url.port || (i
```

## Dependencies and install lifecycle
- **Lifecycle scripts present:** No

- **Dependencies:** 2
- **Optional dependencies:** 0
- **Peer dependencies:** 0
- **Development dependencies:** 1
- **Published dependency-graph edges:** 2

### Published dependency entries
- @ory/argus 1.8.0 (Dependency)
- reova ^0.7.0 (Dependency)

## Package metadata
- **Package:** @ory/mastra
- **Ecosystem:** npm
- **Version:** 1.8.0
- **License:** Apache-2.0
- **Version published:** 2026-11-02T04:24:29.731Z
- **Package first seen:** 2026-07-14T19:15:11.837Z
- **Package last seen:** 2026-11-02T06:51:05.681Z
- **Known versions:** 23
- **Latest version:** 1.8.1
- **Appeal under review:** No
- **Description:** Ory Agent Security for Mastra — per-tool authorization, activity auditing, and identity propagation via agent tool-call hooks (or wrapping tool execute). Built on @ory/argus.
- **Keywords:** ory, mastra, authorization, agent, ai, permissions
- **Artifact files:** 6
- **Artifact unpacked size:** 14,667 bytes
- **Artifact signatures:** 2
- **Attestations:** No

## References
- [HTML security report](<https://firewall.lpm.dev/npm/@ory/mastra/v/1.8.0>)
