Runtime-level enforcement that prevents agents from executing research/development tasks without completing a grill (design review) session first.
Writing "always do a design review before coding" in AGENTS.md is a prompt-level constraint — the agent can forget or ignore it. Even wrapping dispatch logic in a script doesn't help if the agent can bypass the script with raw exec.
Grill Gate hooks into OpenClaw's before_tool_call runtime hook — a layer the agent cannot bypass. Before any exec or sessions_spawn call actually executes, the plugin checks:
hermes, a coding agent CLI)?No token → blocked. The agent physically cannot proceed without completing the grill process first.
text
Agent wants to exec hermes / spawn subagent
↓
before_tool_call hook fires (runtime-level, unforgeable)
↓
grill-gate checks: blocked command? trigger keywords?
↓
YES → check for grill token in .grill-tokens/
↓
No token → BLOCK (tool call rejected)
Has token → ALLOW (proceed normally)
Create ~/.openclaw/grill-gate.json (all fields optional):
json
{
"triggers": ["research", "develop", "design", "architect", "plan", "refactor", "migrate"],
"exemptions": ["ASAP", "skip grill", "just do it"],
"blockedCommands": ["hermes", "claude", "codex"],
"tokenDir": "/path/to/.grill-tokens",
"tokenTtlSeconds": 3600
}
Or set via environment variable:
bash
export GRILL_GATE_CONFIG='{"triggers":["research","design"],"tokenTtlSeconds":7200}'
Built-in presets for Chinese and English keywords (both loaded by default):
LanguageTriggersExemptionsChinese研究, 开发, 设计, 架构, 方案, 规划, 重构, 迁移快点, 直接做, 赶紧Englishresearch, develop, design, architect, plan, refactor, migrateASAP, skip grill, just do it
After completing a grill-with-docs session:
bash
python3 scripts/auto_dispatch.py --issue-grill-token "task description"
# Returns: {"token_id": "abc123", "status": "issued"}
Tokens are one-hour, one-use files stored in the configured tokenDir.
This plugin is designed as the innermost layer of a three-layer grill enforcement system:
LayerMechanismBypassable?1. auto_dispatch.pyReturns empty plan for grill-required tasks✅ Agent can skip it2. hermes_exec.pyChecks token before executing✅ Agent can use raw exec3. grill-gate pluginRuntime hook on every tool call**❌ Cannot bypass**