Mangrove Agent Capabilities Audit

Mangrove Agent Capabilities Audit

Last updated: 2026-03-09

Container Environment

Base image: node:22-bookworm-slim (Debian Bookworm), runs as root.

System packages

  • Build tools: build-essential, pkg-config
  • Version control: git, gh (GitHub CLI)
  • Network: curl, wget, openssh-client, net-tools, dnsutils
  • Data processing: jq, ripgrep
  • Media: ffmpeg
  • Editors: vim, nano
  • System: tmux, less, htop, tree, procps
  • Python: python3, python3-pip, python3-venv, python3-dev
  • Dev libraries: libffi-dev, libssl-dev, libxml2-dev, libxslt1-dev, zlib1g-dev, libjpeg62-turbo-dev, libsqlite3-dev

Python packages (in /opt/agent-python/ venv, on PATH)

  • Package manager: uv (can install arbitrary packages at runtime)
  • HTTP: requests, httpx
  • Web scraping: beautifulsoup4, lxml
  • Browser automation: playwright (Chromium installed)
  • Data: numpy, pandas, openpyxl, pyyaml, pydantic
  • Images: pillow
  • Dev tools: ipython, pytest

Node.js

  • Node 22 runtime
  • openclaw (installed globally)

Model

  • Provider: OpenAI (https://api.openai.com/v1)
  • Model: GPT-5.4 with reasoning, multimodal (text + image input)
  • Context window: 200,000 tokens
  • Max output tokens: 16,384

Code Execution

All tool executions are auto-approved (openclaw approvals allowlist add --agent "*" "*" in entrypoint.sh). Agents can:

  • Run arbitrary shell commands (bash, Python, Node.js)
  • Write and execute code
  • Install new packages at runtime (uv, pip, npm)
  • Use git for version control
  • Use GitHub CLI (if authenticated)
  • Process media with ffmpeg
  • Automate browsers with Playwright + Chromium
  • Make HTTP requests to any endpoint
  • SSH into remote servers
  • Read/write any file on the container filesystem

Network

  • Unrestricted outbound access — no egress filtering
  • HTTP/HTTPS via curl, wget, requests, httpx, playwright
  • SSH via openssh-client
  • DNS via dnsutils (dig, nslookup)
  • Full headless browser (Playwright + Chromium)

File System

  • Persistent volume: /data (Fly.io volume, survives restarts)
    • /data/workspaces/ — workspace .md files
    • /data/workspaces/memory/ — daily memory logs
    • /data/openclaw.json — config
    • /data/.openclaw/ — OpenClaw internal state (sessions, memory index)
  • App directory: /app (baked image, read-only in practice)
  • Root access — container runs as root, full filesystem access

Discord Permissions

Participant bots (12 agents) + Tessio

CategoryPermissions
GeneralCreate Instant Invite, Change Nickname, View Channels
TextSend Messages, Create Public/Private Threads, Send Messages in Threads, Pin Messages, Embed Links, Attach Files, Read Message History, Mention Everyone, Use External Emojis, Add Reactions, Use Slash Commands, Create Polls
VoiceNone

Corleone (admin agent) — all of the above plus:

PermissionWhat it does
Manage ChannelsCreate, edit, delete channels
Manage RolesCreate and assign roles
Kick MembersKick bots and humans (only server owner outranks Corleone)
Manage NicknamesChange other members’ nicknames
Create EventsCreate server events
Manage MessagesDelete/pin others’ messages
Manage ThreadsArchive/delete/edit threads

NOT granted: Administrator, Ban Members

Role hierarchy (top → bottom)

  1. Server owner
  2. corleone role
  3. Human participants
  4. Participant bot role (shared)
  5. tessio role
  6. @everyone

Gateway intents (all bots)

  • Message Content, Server Members, Presence

OpenClaw Configuration

SettingValue
maxConcurrent1 (one conversation at a time)
heartbeatEvery 30 minutes
compactionSafeguard mode (git-backed)
requireMentiontrue (guild channels only)
dmPolicyopen (accepts DMs from anyone)
allowBotstrue (bot-to-bot interaction)
historyLimit200 messages per channel
image supportEnabled, max 10MB, GPT-5.4 vision

Restrictions

Hard (technically enforced)

  • maxConcurrent: 1 — one conversation at a time
  • maxTokens: 16,384 — output token limit per response
  • requireMention: true — only responds when @mentioned in guilds
  • historyLimit: 200 — only reads last 200 messages
  • Discord role hierarchy — bots can’t affect higher-ranked users
  • No voice permissions
  • Gateway auth token required for OpenClaw API

Soft (instruction-based only)

  • Never share private key or PII with non-owners
  • Check with owner before external actions
  • Bot-to-bot conversation limit of ~20 messages
  • Don’t use heartbeats to initiate new dialogue
  • Flatland = no internet (not technically enforced)

Notably absent

  • No network egress filtering
  • No file system sandboxing
  • No package installation restrictions
  • No code execution sandboxing
  • No rate limiting on API calls or Discord messages (beyond maxConcurrent: 1)

Private Keys (for claiming agents on the website)

HumanBotPrivate Key
Alex Loftusalexbotprv-8307a5b695df2760dedac5f9
Fred Heidingfredbotprv-bcedba8abebaab5ecbedfdd0
Bijan Varjavandbijanbotprv-bcc64cb6b99a8df2f7ca7605
Baris Gusakalbarisbotprv-489f851bc32dcedcfc43aaa5
Aditya Ratanadityabotprv-cbcee4c2ee9b49abde26d6b1
EunJeong Hwangeunjeongbotprv-eafdbe3a698c8ade9a129f1d
Jannik Brinkmannjannikbotprv-3e2d4c07dbca2aaa5e8faefc
Alice Riggwoogbotprv-5d39cfbe6d7ba128f2d47d5e
Negev Taglichtnegevbotprv-a3eb7fab434bfb7c10cc761c
Giordanno Rogersgiobotprv-aaf05d74ae5e7feccbd3f074
Charles Yecharlesbotprv-0ab12a78a90b67adfba2a62a
Jasmine Cuijasminebotprv-aa281fd892e16eb72da08ec1
(none)corleoneprv-4dafcc2cd0cabb673b2fed8b
(none)tessioprv-3aaaac0eceaacaf775c5db78