Glance
SuspiciousAudited by ClawScan on May 10, 2026.
Overview
Glance appears to be a real dashboard-management skill, but it grants broad local dashboard, credential, generated-code, and persistent-agent authority that users should review carefully before installing.
Install only if you trust the Glance project and have reviewed the installer. Before use, require explicit approval before any API key is stored, use least-privilege tokens, review generated widget/server code, treat imported or stored widget instructions as untrusted, and disable background services or agent_refresh schedules unless you want ongoing autonomous updates.
Findings (8)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
API keys for services like GitHub, Anthropic, OpenAI, Notion, or Linear could be duplicated into another local credential store and then used by widgets or generated server code.
The skill encourages reusing credentials already known to the agent and copying them into Glance without explicit per-credential user approval.
OpenClaw already knows your API keys... OpenClaw doesn't ask you to configure anything. It just stores your existing credentials in Glance's encrypted database
Require explicit user confirmation for each credential, explain where it will be stored and how it will be used, prefer least-privilege tokens, and do not assume credentials in agent memory may be reused automatically.
A local agent or process with GLANCE_URL may be able to mutate dashboard state without a separate Glance token.
The documented workflow lets the agent access local Glance APIs by setting an Origin header rather than using a bearer token, despite those APIs managing widgets and cached data.
Auth note: Local requests with Origin header bypass Bearer token auth
Require bearer-token authorization for mutating and credential-related endpoints, declare any required token in metadata, and avoid treating a spoofable Origin header as authorization.
A malicious or compromised widget instruction could redirect the agent to perform actions unrelated to safe dashboard refreshes.
The agent is told to fetch instructions from a stored widget record and follow them, making dashboard/widget content an authoritative instruction source.
sqlite3 $GLANCE_DATA/glance.db "SELECT json_extract(fetch, '$.instructions')..." ... # Follow the instructions, then:
Treat widget instructions as untrusted data, constrain them to a narrow data-refresh contract, and require user approval before using credentials, changing accounts, deleting data, or performing unrelated tool actions.
Bad refresh instructions can persist and repeatedly influence future agent behavior, especially for scheduled widgets.
Agent refresh widgets persist instructions and schedules that can be reused across future tasks.
fetch.instructions ... REQUIRED if type is agent_refresh; fetch.schedule ... REQUIRED if type is agent_refresh (cron)
Store only structured, validated refresh parameters when possible; review any free-form instructions before enabling schedules; and provide a clear way to disable or reset agent_refresh widgets.
Generated widget code could call unexpected services, misuse stored credentials, or expose dashboard data if not reviewed.
The documented workflow has the agent create server-side widget code that can access stored credentials; the supplied artifacts do not show sandboxing or approval boundaries.
"server_code": "const token = await getCredential('github'); ...", "server_code_enabled": trueRequire user review before enabling server_code, sandbox execution, restrict outbound network access and credential access per widget, and log what each widget is allowed to do.
Running the installer gives code from an external domain control over local setup, dependency installation, and optional service installation.
The recommended one-line install executes a remote script that is not included in the reviewed artifacts.
curl -fsSL https://openglance.dev/install.sh | bash
Inspect the installer before running it, prefer a pinned release or reviewed source checkout, and avoid piping remote scripts directly into a shell.
Glance may keep running and refreshing widgets after the original task is complete.
The macOS service example installs a launch agent that starts automatically and restarts persistently.
<key>RunAtLoad</key> <true/> ... <key>KeepAlive</key> <true/>
Only install the background service if you want always-on behavior, and keep clear stop/unload instructions available.
A dashboard or widget action can wake the agent and cause it to process refresh work, so webhook tokens and allowed actions matter.
The optional refresh flow lets the dashboard call the OpenClaw gateway with a token to trigger agent activity.
OPENCLAW_WEBHOOK_URL=http://localhost:18789/tools/invoke ... clicking refresh ... will instantly wake OpenClaw
Use a narrowly scoped webhook token, restrict the gateway to local trusted callers, and verify what payloads the dashboard can send to OpenClaw.
