Angelia for Grok Build: setup, approvals and limits
Angelia connects Grok Build, xAI's coding agent CLI (grok), on your Mac to WhatsApp and Telegram. Each chat gets its own Grok Build session, in its own folder. Grok Build reads the profile's CLAUDE.md and Claude settings, so the instructions and rules you wrote for Claude Code work here too. Angelia runs no model of its own: Grok Build does the work, under your own grok login.
What Angelia does for Grok Build
- One session per chat. Each chat is routed to a profile: a folder with its own instructions and memory. Angelia keeps one
grok agent stdioprocess per chat, and the session comes back after a restart./newin one chat never touches another. - Your instructions and rules.
angelia compilewrites the profile's deny rules into its.claude/settings.json, which Grok Build reads. Grok Build reads a folder'sCLAUDE.mdand settings only once you trust the folder. The wizard, onboarding and/backend grokdo that for you. - Grok Build's own permission modes. The profile's
permission_modegoes to Grok Build as its own mode. Its questions come to the chat. - It keeps running. As a LaunchAgent, Angelia starts at login and comes back after a crash. The chat answers whenever the Mac is on and awake.
What you need
- A Mac with Node 22.23.4+, 24.22.1+ or 26.12.1+ and git.
- Grok Build, signed in with
grok login. Measured with 1.0.13 to 1.0.40; check withgrok --version. - A chat app on your phone. For Telegram, a bot token from @BotFather (more). For WhatsApp, a second, established number, not your personal one (why).
- Optional:
brew install openai-whisper ffmpegfor voice notes.
Set it up
curl -fsSL https://useangelia.com/install | sh
angelia service install
The first line checks the release's signature, installs Angelia and starts a setup wizard (read the script). Pick Quick or Advanced, then Telegram, WhatsApp or both. Pick Grok Build as the CLI. The wizard asks to mark the profile's folder trusted in grok: say yes. Then send the bot (or the second number) a message from your phone to pair the chat. The second line keeps Angelia running.
Already running Angelia with another CLI? An owner sends /backend grok in one of the profile's chats. Angelia edits the routing table, ~/.angelia/workspace/routing.yaml, with a backup, compiles the profile for Grok Build, trusts its folder in grok and starts a fresh session.
If you set the profile up by hand, run this once in its folder, or Grok Build will not read its CLAUDE.md. It trusts the folder, then prints Project trusted: yes:
grok --trust inspect
What works from the chat
Approvals
Grok Build decides by itself which commands to ask about. Measured in September 2026 (grok 1.0.13 and 1.0.30): touch ran by itself; rm, git init and curl asked. The question comes to the chat as it does for Claude Code. bypassPermissions approves everything without asking.
Answering a Grok Build question from the chat works from Angelia 0.3.23. In 0.3.22, a bug keeps yes <id> from reaching Grok Build's questions. The fix ships in 0.3.23. Run angelia update once 0.3.23 is out.
No sandbox
Angelia has no sandbox for Grok Build: sandbox: true is for Claude Code, Codex and pi, and compile says it is ignored here. The deny rules stop Grok Build's file tools, not a program its shell runs. So keep the shell asking in any profile other people can talk to.
- Grok Build reads a path rule only as a full path. A rule written with
~is ignored, and compile warns about it. - MCP servers set up for your whole user reach every folder, so compile denies each one the profile was not given. Compile does not write the servers a profile was given yet: add them with
grok mcp add --scope projectin the profile's folder.
Voice notes, photos and files
A photo or document you send lands in the profile's .inbox/ folder, up to 20 MB, and Grok Build gets a [file: path] line. A voice note arrives as [voice note: path], and the agent runs angelia transcribe <path>. Grok Build sends files back with angelia send-media. Every path is checked first: never a credential location, never another profile's folder.
Chat commands
/new, /stop, /status, /resume, /model, /effort, /backend, /restart and the others /help lists are answered by Angelia, without spending a token. /model alone shows the models grok models lists. Any other slash command is passed to Grok Build as text. Long answers are split as for every CLI.
Tested
On 2026-10-27, with Angelia 0.3.22 and Grok Build 1.0.40 on macOS, in a WhatsApp group routed to one profile in permission_mode: default:
- An answer came in about 11 seconds. A long answer arrived in 2 messages, in order.
/status,/newand/stopwork.- Grok Build's questions could not be answered from the chat (ids starting
call-). Fixed for 0.3.23.
Grok Build on Telegram is not tested yet. Voice notes are tested with Claude Code only.
Limits
- macOS only for now. Linux is next. The Mac must be on and awake: while it sleeps, nothing answers.
- Approvals from the chat need Angelia 0.3.23 or newer.
- No sandbox, as above.
angelia ask(one profile asking another's agent) does not reach a Grok Build profile yet. Give it a task withangelia turninstead.- API key variables (
XAI_API_KEY,GROK_CODE_XAI_API_KEY) are kept out of the agent's environment. - Prompt injection is not solved. A web page or a forwarded message can still talk the agent into what its mode allows. Read the security model before you give the bot to anyone but yourself.
- It is a young project (v0.3), maintained by one person.
Try Angelia
curl -fsSL https://useangelia.com/install | sh
It checks the release's signature, then a wizard pairs your first chat. Free and open source (MIT). How it works · Why Grok Build runs this way · GitHub