registry  /  @genex-ai/cli-demo  /  0.36.0

@genex-ai/cli-demo@0.36.0

⚠ Under review

Set up your ~/.claude workspace, authorize, create a game project, generate AI assets, and publish (genex CLI).

AI Security Review

scanned 2h ago · by lpm-firewall-ai

LPM treats this as warn-only first-party agent extension lifecycle risk. No confirmed malware or unconsented install-time attack was found. The main risk is explicit CLI setup and refresh of package-owned AI agent skills/templates plus authenticated Genex deploy/publish operations.

Static reason
High-risk behavior combination matched malicious policy.
Trigger
User runs genex init, link, preview, publish, make-remixable, generate, controller, or explore.
Impact
Could modify AI-agent skill surfaces under user-selected or detected agent directories and upload/deploy project files excluding env secrets.
Mechanism
Explicit CLI writes Genex workspace files and calls Genex APIs with user token.
Rationale
Static inspection shows a user-invoked Genex CLI with documented auth, project creation, deploy, and package-owned agent skill installation; there is no install-time execution, stealth persistence, credential exfiltration, or remote payload execution. Because it mutates AI agent control surfaces even though explicitly and first-party, warn rather than block.
Evidence
package.jsondist/index.jsREADME.mdtemplates/agents/genex-helper.mdtemplates/commands/genex-status.mdtemplates/skills/genex-updates/SKILL.md~/.claude~/.codex/skills~/.cursor/skills~/.genex/env~/.genex/update-check.json./.genex/project.json./.gitignore./src/genex.config.ts./.env./.env.development.local./src/controllers./public/assets
Network endpoints5
demo-web.glotech.worlddemo-api.glotech.worldwss://demo-colyseus.glotech.worldregistry.npmjs.org/-/package/<package>/dist-tagsassets.genex.technology

Decision evidence

public snapshot
AI called this Suspicious at 86.0% confidence as Benign with medium false-positive risk.
Evidence for warning
  • dist/index.js:53-68 targets ~/.claude, ~/.codex/skills, ~/.cursor/skills
  • dist/index.js:94-116 copies package templates into agent workspaces
  • dist/index.js:149-187 auto-refreshes existing genex-* skills on non-init CLI commands
  • dist/index.js:973-986 init writes GENEX_TOKEN to ~/.genex/env
  • dist/index.js:1266-1315 uploads build files to Genex/R2 with bearer tokens
  • dist/index.js:1338-1388 pushes project source to a returned git push URL
Evidence against
  • package.json has no preinstall/install/postinstall lifecycle hooks
  • Agent workspace mutation is via explicit genex commands and package-owned genex-* templates
  • dist/index.js:328-447 loopback auth validates random state before accepting token
  • dist/index.js:1170-1172 and 1360-1361 exclude .env/.env.* and .genex from deploy/source push
  • Network endpoints are documented Genex/npm services or user-overridable CLI options
  • No credential harvesting beyond GENEX_TOKEN lookup for authenticated Genex API calls
Behavioral surface
Source
ChildProcessCryptoEnvironmentVarsFilesystemNetworkShell
Supply chain
HighEntropyStringsUrlStrings
ManifestNo manifest risk signals triggered.
scanned 20 file(s), 453 KB of source, external domains: 127.0.0.1, demo-api.glotech.world, demo-web.glotech.world, registry.npmjs.org, www.npmjs.com

Source & flagged code

3 flagged · loading source
dist/index.jsView file
10import { fileURLToPath } from "url"; L11: var DEFAULT_AUTH_URL = "https://demo-web.glotech.world"; L12: var DEFAULT_API_URL = "https://demo-api.glotech.world"; ... L18: function getAuthUrl(override) { L19: const raw = override || process.env[AUTH_URL_ENV] || DEFAULT_AUTH_URL; L20: return raw.replace(/\/+$/, ""); ... L30: function getGenexDir() { L31: return path.join(os.homedir(), ".genex"); L32: } ... L43: const here = path.dirname(fileURLToPath(import.meta.url)); L44: const pkg = JSON.parse( L45: fs.readFileSync(path.resolve(here, "..", "package.json"), "utf8")
Critical
Credential Exfiltration

Source appears to send environment or credential material to an external endpoint.

dist/index.jsView on unpkg · L10
10Trigger-reachable chain: manifest.bin -> dist/index.js L10: import { fileURLToPath } from "url"; L11: var DEFAULT_AUTH_URL = "https://demo-web.glotech.world"; L12: var DEFAULT_API_URL = "https://demo-api.glotech.world"; ... L18: function getAuthUrl(override) { L19: const raw = override || process.env[AUTH_URL_ENV] || DEFAULT_AUTH_URL; L20: return raw.replace(/\/+$/, ""); ... L30: function getGenexDir() { L31: return path.join(os.homedir(), ".genex"); L32: } ... L43: const here = path.dirname(fileURLToPath(import.meta.url)); L44: const pkg = JSON.parse( L45: fs.readFileSync(path.resolve(here, "..", "package.json"), "utf8")
Critical
Trigger Reachable Dangerous Capability

A package entrypoint or install-time lifecycle script reaches a source file with blocking dangerous behavior.

dist/index.jsView on unpkg · L10
10import { fileURLToPath } from "url"; L11: var DEFAULT_AUTH_URL = "https://demo-web.glotech.world"; L12: var DEFAULT_API_URL = "https://demo-api.glotech.world"; ... L18: function getAuthUrl(override) { L19: const raw = override || process.env[AUTH_URL_ENV] || DEFAULT_AUTH_URL; L20: return raw.replace(/\/+$/, ""); ... L30: function getGenexDir() { L31: return path.join(os.homedir(), ".genex"); L32: } ... L43: const here = path.dirname(fileURLToPath(import.meta.url)); L44: const pkg = JSON.parse( L45: fs.readFileSync(path.resolve(here, "..", "package.json"), "utf8")
Low
Weak Crypto

Package source references weak cryptographic algorithms.

dist/index.jsView on unpkg · L10

Findings

2 Critical3 Medium5 Low
CriticalCredential Exfiltrationdist/index.js
CriticalTrigger Reachable Dangerous Capabilitydist/index.js
MediumNetwork
MediumEnvironment Vars
MediumStructural Risk Force Deep Review
LowScripts Present
LowWeak Cryptodist/index.js
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings