Scan Report
20 /100
multi-agent-brand-studio
Sets up a Multi-Agent Brand Studio team on OpenClaw: 5 AI agents (Leader, Creator, Worker, Researcher, Engineer) + on-demand Reviewer, with shared knowledge base, approval workflow, brand isolation, and Telegram integration.
A legitimate multi-agent orchestration skill with clean code and no malicious behavior. Minor documentation gaps exist around script usage and exec permissions for cron isolated sessions, but no credential theft, data exfiltration, or obfuscation is present.
Safe to install
Approve for use. No actionable security concerns. Consider documenting exec usage by the cron isolated session in SKILL.md for transparency.
Findings 2 items
| Severity | Finding | Location |
|---|---|---|
| Low | SKILL.md does not declare script execution Doc Mismatch | SKILL.md:1 |
| Low | Cron isolated session exec permission not declared in tool fence Doc Mismatch | assets/workspace/AGENTS.md:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | NONE | WRITE | ✓ Aligned | scripts/scaffold.sh creates dirs in ~/.openclaw; scripts/patch-config.js writes … |
| Network | NONE | WRITE | ✓ Aligned | scripts/telegram-topics.js makes HTTPS POST to api.telegram.org |
| Shell | NONE | WRITE | ✓ Aligned | scripts/scaffold.sh is a bash script executed as part of setup |
| Environment | NONE | READ | ✓ Aligned | patch-config.js reads $HOME for baseDir; scaffold.sh reads $HOME, $USER, $EUID |
| Skill Invoke | NONE | WRITE | ✓ Aligned | Copies instance-setup, brand-manager, qmd-setup sub-skills into Leader's skills/ |
| Clipboard | NONE | NONE | — | No clipboard access detected |
| Browser | NONE | NONE | — | No browser tool access in any agent config |
| Database | NONE | NONE | — | QMD optionally uses SQLite at ~/.openclaw/memory/main.sqlite, only if owner inst… |
File Tree
45 files · 168.8 KB · 4894 lines Markdown 40f · 3671L
JavaScript 2f · 765L
Shell 1f · 358L
JSON 2f · 100L
├─
▾
assets
│ ├─
▾
config
│ │ └─
cron-jobs.json
JSON
│ ├─
▾
shared
│ │ ├─
▾
brands
│ │ │ └─
▾
_template
│ │ │ ├─
content-guidelines.md
Markdown
│ │ │ └─
profile.md
Markdown
│ │ ├─
▾
domain
│ │ │ └─
▾
_template
│ │ │ └─
industry.md
Markdown
│ │ ├─
▾
errors
│ │ │ └─
solutions.md
Markdown
│ │ ├─
▾
operations
│ │ │ ├─
approval-workflow.md
Markdown
│ │ │ ├─
brief-templates.md
Markdown
│ │ │ ├─
channel-map.md
Markdown
│ │ │ ├─
communication-signals.md
Markdown
│ │ │ ├─
content-guidelines.md
Markdown
│ │ │ └─
posting-schedule.md
Markdown
│ │ ├─
brand-guide.md
Markdown
│ │ ├─
brand-registry.md
Markdown
│ │ ├─
compliance-guide.md
Markdown
│ │ ├─
system-guide.md
Markdown
│ │ └─
team-roster.md
Markdown
│ ├─
▾
skills
│ │ ├─
▾
brand-manager
│ │ │ └─
SKILL.md
Markdown
│ │ ├─
▾
instance-setup
│ │ │ └─
SKILL.md
Markdown
│ │ └─
▾
qmd-setup
│ │ └─
SKILL.md
Markdown
│ ├─
▾
workspace
│ │ ├─
AGENTS.md
Markdown
│ │ ├─
HEARTBEAT.md
Markdown
│ │ ├─
IDENTITY.md
Markdown
│ │ └─
SOUL.md
Markdown
│ ├─
▾
workspace-creator
│ │ ├─
AGENTS.md
Markdown
│ │ └─
SOUL.md
Markdown
│ ├─
▾
workspace-engineer
│ │ ├─
AGENTS.md
Markdown
│ │ └─
SOUL.md
Markdown
│ ├─
▾
workspace-researcher
│ │ ├─
AGENTS.md
Markdown
│ │ └─
SOUL.md
Markdown
│ ├─
▾
workspace-reviewer
│ │ ├─
AGENTS.md
Markdown
│ │ └─
SOUL.md
Markdown
│ └─
▾
workspace-worker
│ ├─
AGENTS.md
Markdown
│ └─
SOUL.md
Markdown
├─
▾
references
│ ├─
agent-roles.md
Markdown
│ ├─
approval-workflow.md
Markdown
│ ├─
architecture.md
Markdown
│ ├─
example-agent-config.json
JSON
│ ├─
memory-system.md
Markdown
│ ├─
signals-protocol.md
Markdown
│ └─
troubleshooting.md
Markdown
├─
▾
scripts
│ ├─
patch-config.js
JavaScript
│ ├─
scaffold.sh
Shell
│ └─
telegram-topics.js
JavaScript
├─
README.md
Markdown
└─
SKILL.md
Markdown
Dependencies 5 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
fs (Node.js stdlib) | bundled | node | No | Standard library, no external deps |
path (Node.js stdlib) | bundled | node | No | Standard library, no external deps |
child_process (Node.js stdlib) | bundled | node | No | Used only for which qmd — no arbitrary command execution |
https (Node.js stdlib) | bundled | node | No | Used for Telegram Bot API calls only |
@tobilu/qmd | * | npm/bun (optional) | No | Optional dependency; only installed if owner explicitly runs qmd-setup |
Security Positives
✓ No base64-encoded execution, eval(), or obfuscated payloads anywhere in the codebase
✓ No credential harvesting — scripts read $HOME for path resolution only, not for harvesting secrets
✓ No network exfiltration — telegram-topics.js only calls the Telegram Bot API for topic creation
✓ No sensitive path access (~/.ssh, ~/.aws, .env) — all writes target ~/.openclaw
✓ No curl|bash or wget|sh remote script downloads — scaffold.sh only operates on local files
✓ No supply chain risk — all dependencies are standard library (fs, path, child_process, https in Node.js; bash builtins in shell)
✓ No persistence mechanisms beyond cron jobs, which are owner-configured and documented
✓ patch-config.js uses deep merge safely — existing config is backed up before writing
✓ scaffold.sh uses set -euo pipefail — safe error handling with no silent failures
✓ No hidden HTML comments or steganographic payloads
✓ Telegram bot token is read from config file, not hardcoded or harvested from environment
✓ All agent tool restrictions are explicitly defined in patch-config.js AGENT_TOOL_DENY map
✓ QMD is optional and only installed if owner explicitly runs qmd-setup or uses --force-qmd