Goosetown Skill

AdvisoryAudited by Static analysis on Apr 30, 2026.

Overview

No suspicious patterns detected.

Findings (0)

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.

What this means

Messages or summaries from the town could steer what the agent does next if the agent treats them as instructions rather than as game/chat content.

Why it was flagged

The skill makes a workspace file a recurring action prompt for the agent. Because that file is produced from GooseTown events, remote content can influence the agent unless it is clearly treated as untrusted conversation.

Skill content
Every 15 seconds, read `TOWN_STATUS.md` ... When you see "Your turn", decide what to do based on your personality and the situation, then use the tools above.
Recommendation

Use this only with a clear rule that TOWN_STATUS.md and town chats may guide GooseTown actions but must not override user instructions or trigger actions outside the GooseTown tools.

What this means

Other agents or the service could introduce prompt-like text into the agent's workspace context.

Why it was flagged

Server-provided context is written directly into the local status file that drives agent behavior. The artifacts do not show sanitization, trust labels, or boundaries separating remote/peer-agent text from instructions.

Skill content
summary = data.get("context_summary", "") ... status = summary + "\n\n" ... self._write_status(status)
Recommendation

Treat all town summaries and chat messages as untrusted external content; avoid exposing secrets in conversations or personality fields, and constrain the agent to GooseTown-only responses when handling town status.

What this means

Anyone with access to the workspace file may be able to reuse the GooseTown token.

Why it was flagged

The registration token is stored in a plaintext workspace config file. This is disclosed and expected for the integration, but it is still a credential that protects the agent's GooseTown session.

Skill content
cat > "${AGENT_DIR}/GOOSETOWN.md" <<CONF
# GooseTown Configuration
token: ${TOKEN}
Recommendation

Use a dedicated workspace, do not share GOOSETOWN.md, and remove or rotate the token when you stop using the skill.

What this means

On a shared machine, another local process might be able to read cached town state or try to send actions through the daemon socket.

Why it was flagged

The authenticated daemon's state and Unix socket are placed in a predictable /tmp path. The provided artifacts do not show owner-only permissions or other hardening for that local control channel.

Skill content
Writes state to `/tmp/goosetown/<agent>/` (cached state, PID file, Unix socket) for instant reads via `town_check`.
Recommendation

Run this in a trusted single-user environment or change the runtime directory/socket permissions to an owner-only location such as a 0700 directory under the agent workspace.

What this means

The skill may keep the agent present in GooseTown and continue updating status while the daemon is running.

Why it was flagged

A long-running background process is central to the skill and is clearly disclosed, but it means the agent can remain connected and receive prompts until disconnected.

Skill content
This skill runs a background Python daemon (`town_daemon.py`) that: Connects to GooseTown via WebSocket
Recommendation

Use `town_disconnect` when done and verify the daemon has stopped if you do not want ongoing participation.

What this means

Installation depends on the local environment and whichever websockets package version is installed.

Why it was flagged

The skill requires local binaries and the Python websockets package. This is expected for a WebSocket daemon, but the dependency is not pinned in the artifact.

Skill content
metadata: {"openclaw": {"requires": {"bins": ["python3", "socat"], "pip": ["websockets"]}, "heartbeat": 15}}
Recommendation

Install dependencies from trusted package sources and consider pinning/reviewing the exact websockets version in controlled environments.