registry  /  openwriter  /  0.40.1

openwriter@0.40.1

Broken package: published without bundled plugins. Use 0.40.2.

The open-source writing surface for AI agents. Markdown-native editor with pending change review — your agent writes, you accept or reject.

Static Scan Results

scanned 4d ago · by rust-scanner

Static analysis flagged 14 finding(s) at 72.0% confidence. This version is warn-only unless an AI or security-team review confirms malicious behavior.

Static reason
One or more suspicious static signals were detected.

Decision evidence

public snapshot
Behavioral surface
Source
ChildProcessCryptoDynamicRequireEnvironmentVarsFilesystemNetworkShellWebSocket
Supply chain
HighEntropyStringsMinifiedObfuscatedUrlStrings
ManifestNo manifest risk signals triggered.
scanned 72 file(s), 2.17 MB of source, external domains: 127.0.0.1, api.fxtwitter.com, developer.x.com, example.com, git-scm.com, github.com, prosemirror.net, publish.openwriter.io, purl.org, reactjs.org, registry.npmjs.org, twemoji.maxcdn.com, unavatar.io, www.idpf.org, www.w3.org, x.com

Source & flagged code

4 flagged · loading source
dist/server/plugin-install.jsView file
7import { homedir } from 'os'; L8: import { execSync } from 'child_process'; L9: const PLUGINS_DIR = join(homedir(), '.openwriter', 'plugins');
High
Child Process

Package source references child process execution.

dist/server/plugin-install.jsView on unpkg · L7
34try { L35: execSync(`npm install --save ${packageName}`, { L36: cwd: PLUGINS_DIR,
High
Runtime Package Install

Package source invokes a package manager install command at runtime.

dist/server/plugin-install.jsView on unpkg · L34
dist/server/plugin-discovery.jsView file
157// ESM import from non-standard node_modules requires path resolution L158: const userRequire = createRequire(join(USER_PLUGINS_DIR, 'package.json')); L159: const resolved = userRequire.resolve(name);
Medium
Dynamic Require

Package source references dynamic require/import behavior.

dist/server/plugin-discovery.jsView on unpkg · L157
dist/client/assets/source-serif-4-latin-wght-italic-D2yaqPoE.woff2View file
path = dist/client/assets/source-serif-4-latin-wght-italic-D2yaqPoE.woff2 kind = high_entropy_blob sizeBytes = 51516 magicHex = [redacted]
High
Ships High Entropy Blob

Package ships high-entropy non-source blobs.

dist/client/assets/source-serif-4-latin-wght-italic-D2yaqPoE.woff2View on unpkg

Findings

4 High4 Medium6 Low
HighChild Processdist/server/plugin-install.js
HighShell
HighRuntime Package Installdist/server/plugin-install.js
HighShips High Entropy Blobdist/client/assets/source-serif-4-latin-wght-italic-D2yaqPoE.woff2
MediumDynamic Requiredist/server/plugin-discovery.js
MediumNetwork
MediumEnvironment Vars
MediumStructural Risk Force Deep Review
LowNon Install Lifecycle Scripts
LowScripts Present
LowFilesystem
LowObfuscated
LowHigh Entropy Strings
LowUrl Strings