frely-cli@0.23.40
CAUTION· startup onlyPublisher claims: "Frely CLI — FrelyMCP gives ChatGPT, Claude, Codex and other MCP clients access to your computer" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Startup only; authenticated tool behavior not tested.- Tested
- install scripts, with decoy credentials in place · second launch with the clock 45 days ahead · server startup over stdio (initialize sent) · every file read, file written and host contacted by what ran
- Not tested
- the tool list (the server exited before answering) · what the tools do when called with real credentials
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
FRELY_CREDENTIAL_KEYFRELY_CREDENTIAL_STOREFRELY_INSTALL_TOKENor--service-credential-storeConfiguration, not credentials: FRELY_COMPUTER_BIN, FRELY_DATA_DIR, FRELY_DEBUG, FRELY_FRPC_BASE_URL, FRELY_HOME, FRELY_INSTALL_SOURCES, FRELY_MCP_DAYS, FRELY_MCP_URL, FRELY_NETWORK_ALLOW_LOOPBACK, FRELY_NO_BROWSER, FRELY_NO_SERVICE, FRELY_RELAY_URL, FRELY_TASK_MAX_CONCURRENT, XDG_RUNTIME_DIR, XDG_STATE_HOME- Where it talks to
- frely.cloud (its own)Also apple.com — 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
- the tool list (the server exited before answering) · what the tools do when called with real credentials
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names apple.com as well as its own vendor. The guard injects FRELY_CREDENTIAL_KEY, FRELY_CREDENTIAL_STORE, FRELY_INSTALL_TOKEN only into requests to frely.cloud (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 (3 scenarios; startup only; authenticated tool behavior not tested) on 2026-11-13 and scored it 68/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: Reads credential paths from the home directory; Privileged sudo command; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 29 s · 3 scenarios · 0 deviationsStatic findings
…ace and temp, network to HTTP(S) and ssh (the connection needs no approval, but reading ~/.ssh config and keys does: request_permission resource=ssh). action=run waits up to …Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.return `Warning: lingering is off for ${user}, so this device goes offline when your SSH session ends. Run \`sudo loginctl enable-linger ${user}\` to keep it online.`;Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.…read-only tools that run on this computer, only the files it asks for; `.git`, `.env*`, key files and git-ignored files are never sent, and the result lists the fil…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.readonly usage: "frely kill <device> <id>";Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.…d-only tools that run on this computer, only the files it asks for; \`.git\`, \`.env*\`, key files and git-ignored files are never sent, and the result lists the fi…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.{ id: "kill", usage: "frely kill <device> <id>", auth: "login", effect: "remote-execution", purpose: "Stop a background command on a device." },Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.…ead-only tools that run here: only files it asks for leave this computer; .git, .env*, key files, git-ignored and binary files are refused; defaults 1 MiB read and …Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…ead-only tools that run here: only files it asks for leave this computer; .git, .env*, key files, git-ignored and binary files are refused; defaults 1 MiB read and …Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…b, so the call finishes by itself and you need not be told. Never background or kill it."; }, { readonly id: "app.install"; readonly usage: "frely app instal…Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.…temp, network to HTTP(S) and ssh (the connection needs no approval, but reading ~/.ssh config and keys does: request_permission resource=ssh). action=run waits up to …Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…b, so the call finishes by itself and you need not be told. Never background or kill it."; }, { readonly id: "app.install"; readonly usage: "frel…Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.…ead-only tools that run here: only files it asks for leave this computer; .git, .env*, key files, git-ignored and binary files are refused; defaults 1 MiB read and …Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.readonly usage: "frely kill <device> <id>";Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.…b, so the call finishes by itself and you need not be told. Never background or kill it." }, { id: "app.install", usage: "frely app install [--force] [--json]", …Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell./** Continues a browser login whose process ended before the owner approved (an agent shell can kill it): waits on the saved device code until it expires. */Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.options.log("Remote control was turned off from the web; locking this computer.");Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…newest progress line while it runs. --no-progress-summary asks the Agent not to write progress lines (use it when the user says so, for example in AGENTS.md); without a flag the account setting applies. With --read the Agent may read fi…Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct./** The upstream key of a local Provider (a NewAPI, vLLM or other gateway that wants one). Kept with the CLI's other secrets; never in local-providers.json, never uploaded. */Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.: `Configuration unreadable. Use owner-only permissions: chmod 700 ${dirname(mcpMetadataPath())} && chmod 600 ${mcpMetadataPath()}`Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts./** Continues a browser login whose process ended before the owner approved (an agent shell can kill it): waits on the saved device code until it expires. */Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.…newest progress line while it runs. --no-progress-summary asks the Agent not to write progress lines (use it when the user says so, for example in AGENTS.md); without a flag the account setting applies. With --read the Agent may read fi…Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.…newest progress line while it runs. --no-progress-summary asks the Agent not to write progress lines (use it when the user says so, for example in AGENTS.md); without a flag the account setting applies. With --read the Agent may read fi…Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.…lling again. If the user asked not to see progress updates (for example in their AGENTS.md), add \`--no-progress-summary\` to the run command. If the result starts with NEED_FI…Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.d.log("Warning: could not mark the AppImage executable; run chmod +x manually.");Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.const chmod = await d.run("chmod", ["+x", target]);Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.… pass as in any MCP client. `frely item config <username/mcp-name>` prints the `mcpServers` JSON for clients that should connect to that one MCP directly.\n\n## What needs FrelyMCP\n\nThe steps above work without FrelyMCP. FrelyMCP is only…Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.kill: "frely kill <device> <id>",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for frely-cli@0.23.40 as of 28 h ago. This is the package itself, not its dependencies.
What would make this Verified
12 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Reads credential paths from the home directory≈ +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 frelyhq: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- 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.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- File type combined with upload action≈ +2 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.