Enable skill live-reload, post_agent match, and workdir deny in Vibe 3.0.3
Upgrade to Mistral Vibe v3.0.3 so on-disk skill edits apply without /reload, post_agent hooks can match a named agent or main, outside_workdir deny blocks path escapes without stalling, and strict_config plus vibe config schema catch unused keys. Fix auto_compact_threshold 0 and any agent file named main.Why this loop
Vibe v3.0.3 changes how sessions, hooks, and config fail. Skills added or edited on disk are picked up by running sessions without /reload, so skill iteration no longer needs a session restart. post_agent hooks now accept match to run only after a given agent, or after the main agent with match = "main"; the payload includes agent_name. An agent file named main is no longer loaded because that name is reserved for hook matching—rename those files first. outside_workdir = "deny" (global or per tool) refuses file and shell access outside the working directory with a tool error instead of a prompt, so the agent keeps working; shell tools with permission = "always" also ask before outside paths, and bare symlink/junction names are treated as paths. Startup now warns about unused or misspelt config keys; strict_config = true or VIBE_STRICT_CONFIG=1 refuses to start on unused settings, and vibe config schema prints every setting including built-in tools. auto_compact_threshold = 0 is a config error; set a positive threshold or remove it. Invalid or unpaired shell timeout settings, and clashes with the lean profile, are now config errors. Do not rely on omitted changes in this release notes body.
Proposed actions
- In Mistral Vibe config set outside_workdir = "deny" globally and on file/shell tools so paths outside the working directory return a tool error instead of a prompt; keep permission = "always" on shell tools if you still want a prompt for those outside paths.
- Add post_agent hooks with match set to the agent configuration name, or match = "main" for the main agent; read agent_name from the hook payload. Rename any agent file named main — Vibe 3.0.3 no longer loads it because the name is reserved for hook matching.
- Set strict_config = true (or export VIBE_STRICT_CONFIG=1) and run: vibe config schema. Fix every unused or misspelt key Vibe names at startup so the process can start.
- If auto_compact_threshold is 0, remove it or set a positive value in the model's range. Pair shell timeout settings; do not leave only one of them set, and do not clash with the lean profile (lean defaults to 1200 s max on all platforms).
- Edit skills on disk in a running Vibe session and continue without /reload. In the / menu, use the project, user, or vibe scope prefix on each skill description to tell skills apart from built-in commands. Click the footer model name while no turn is running to open /model without losing the typed prompt.
Agent prompt
Paste into your agent or query via MCP (get_agent_prompt) — free, no extra AI costAGENTS.md / CLAUDE.md / GEMINI.md rule update
DevAgentRadar → Repo Harness Rule Patch
Goal: update our repository's permanent harness instructions based on this release.
Update the file that tool actually reads. Do not dump everything into one file.
- Claude Code → CLAUDE.md plus
.claude/(skills, hooks, settings, agents, commands). It does not read AGENTS.md natively; start CLAUDE.md with@AGENTS.md. - Codex, Copilot, Cursor, Factory Droid, Grok Build, Roo Code, Goose, OpenCode, Amp, Zed, Aider → AGENTS.md.
- Gemini CLI / Antigravity → GEMINI.md. AGENTS.md only if
context.fileNameis set. - Cursor glob-scoped rules →
.cursor/rules/*.mdc(plain.mdis ignored), not a second constitution. - Codex MCP →
.codex/config.toml, not.mcp.json. - Copilot extra instructions →
.github/copilot-instructions.md; custom agents →.github/agents/. - Windsurf →
.windsurf/rules(do not assume AGENTS.md). - Cline →
.clinerules. - Procedures → a skill (
SKILL.md). Enforcement the model must not skip → a hook. Isolated roles → subagents. - Do not fork the same rule into three tool files.
Context
Assistant: Mistral Vibe Proposal: Enable skill live-reload, post_agent match, and workdir deny in Vibe 3.0.3 Summary: Upgrade to Mistral Vibe v3.0.3 so on-disk skill edits apply without /reload, post_agent hooks can match a named agent or main, outside_workdir deny blocks path escapes without stalling, and strict_config plus vibe config schema catch unused keys. Fix auto_compact_threshold 0 and any agent file named main. Primary source: https://github.com/mistralai/mistral-vibe/releases/tag/v3.0.3
Why it matters
Vibe v3.0.3 changes how sessions, hooks, and config fail. Skills added or edited on disk are picked up by running sessions without /reload, so skill iteration no longer needs a session restart. post_agent hooks now accept match to run only after a given agent, or after the main agent with match = "main"; the payload includes agent_name. An agent file named main is no longer loaded because that name is reserved for hook matching—rename those files first. outside_workdir = "deny" (global or per tool) refuses file and shell access outside the working directory with a tool error instead of a prompt, so the agent keeps working; shell tools with permission = "always" also ask before outside paths, and bare symlink/junction names are treated as paths. Startup now warns about unused or misspelt config keys; strict_config = true or VIBE_STRICT_CONFIG=1 refuses to start on unused settings, and vibe config schema prints every setting including built-in tools. auto_compact_threshold = 0 is a config error; set a positive threshold or remove it. Invalid or unpaired shell timeout settings, and clashes with the lean profile, are now config errors. Do not rely on omitted changes in this release notes body.
Suggested actions
- In Mistral Vibe config set outside_workdir = "deny" globally and on file/shell tools so paths outside the working directory return a tool error instead of a prompt; keep permission = "always" on shell tools if you still want a prompt for those outside paths.
- Add post_agent hooks with match set to the agent configuration name, or match = "main" for the main agent; read agent_name from the hook payload. Rename any agent file named main — Vibe 3.0.3 no longer loads it because the name is reserved for hook matching.
- Set strict_config = true (or export VIBE_STRICT_CONFIG=1) and run: vibe config schema. Fix every unused or misspelt key Vibe names at startup so the process can start.
- If auto_compact_threshold is 0, remove it or set a positive value in the model's range. Pair shell timeout settings; do not leave only one of them set, and do not clash with the lean profile (lean defaults to 1200 s max on all platforms).
- Edit skills on disk in a running Vibe session and continue without /reload. In the / menu, use the project, user, or vibe scope prefix on each skill description to tell skills apart from built-in commands. Click the footer model name while no turn is running to open /model without losing the typed prompt.
Config surfaces this release may change
- hooks (high confidence) — check your repo before applying
- permission rules (high confidence) — check your repo before applying
- skills (high confidence) — check your repo before applying
- subagent definitions (high confidence) — check your repo before applying
- MCP servers — check your repo before applying
After you finish
Do not report this as applied to DevAgentRadar. You cannot write the visitor's loop.
Tell the human: open https://devagentradar.com/proposals/mistral-vibe-v3-0-3-enable-skill-live-reload-post-agent-match-and-workdi and mark Applied, Skipped, or Failed. Proposal id: ddfe2c16-cf0b-4c7a-a96c-c4fe1bd7651e
Instructions:
- Read the existing context files and settings for the tools in this repo.
- Draft an explicit Git diff. Update ONLY agent harness rules or tool configuration.
- Call out deprecated flags, obsolete habits, or changed permission boundaries.
- Do not touch application logic.
Start with the proposed diff and say which layer and which tool's file it belongs in.
Your loop
This browser · no sign-in · not shared as “you”After you run the prompt
Only you can mark this. Agents cannot write your loop.
Your decision stays on this device. A public tally appears after a few votes.