# Mistral Vibe

Mistral Vibe and chock: install methods and steps, what it can enforce, and the evidence behind it.

Install methods: sync. Agentseam tier block+rewrite, grade best-effort before a tool runs.

> Ask the user before running any command on this page: each one changes how their agent or repository behaves.

## Install methods

- Repo hooks: `chock sync --repo . --agents mistral-vibe` writes `.vibe/hooks.toml` (ask the user before running it)

## Evidence wanted

Chock has not seen this agent run its hooks yet. If you use it, you can help: [agentseam issue #187](https://github.com/open-coder-ai/agentseam/issues/187)

## What it can enforce

- Tier: block+rewrite
- Grade before a tool runs: best-effort
- Fail mode before a tool runs: configurable
- Basis: vendor-docs
- Recorded: 2026-10-11

## Events

| Event | Can block | Can rewrite | Fail mode |
| --- | --- | --- | --- |
| pre_tool | yes | yes | configurable |
| stop | yes | no | open |
| post_tool | no | no | open |

## Ask support

Answers an ask with: deny. Honours ask: no. Evidence: tested (tests/test_guard_fail_to_ask.py::test_a_crashed_guard_asks_rather_than_allowing).

## Hook timeout

Default 60 seconds, set by the timeout field in s.

Vendor source: https://docs.mistral.ai/vibe/code/cli/hooks

## Test status

- Repo hooks: untested. A test of the plugin says nothing about repo hooks.
- No row in the engine's list of live tests for this agent.

## Known limits

Adapted (D2a): Vibe's payload is unambiguous (its snake_case hook types pre_tool, post_tool and post_agent are mapped by no other adapter, so the event name alone separates it), and its verdict is the flat_decision family's {decision: deny, reason}. A deny at pre_tool refuses the call and its reason becomes the tool error; at post_agent (the stop-like event) it asks the agent to retry, capped by Vibe at 3 retries per hook per user turn. Install writes [[hooks]] tables in Vibe's own keys: name (agentseam-<type>-<CRC-32 of the command>, unique because Vibe drops a duplicate name across files), type, match ("*" when no matcher is given, since the docs call it required at tool hooks) and command. Escalate degrades to a block: no hook verdict prompts. A transform at pre_tool is written as hook_specific_output.tool_input, which Vibe documents as a full replacement of the tool's arguments, re-validated against the tool's schema (a replacement that fails validation is denied); at post_agent a transform degrades to a block. Fail mode is configurable at pre_tool: open by default (a non-zero exit, timeout or malformed stdout warns and proceeds) and closed with strict = true, which install writes on its pre_tool rule only when called with fail_closed=True (`agentseam tier-table --fail-closed` reads that install). post_agent stays fail-open: Vibe rejects strict there. Project hooks load only in trusted folders, so a written config is not yet a live one. There is no prompt-submit or session event. Vibe also speaks ACP (vibe-acp), a client-agent protocol, not a hook surface; it is not claimed as one. Instruction files reach it through AGENTS.md. Evidence wanted (to test or overturn this row): https://github.com/open-coder-ai/agentseam/issues/187


---

Built from engine [5a4b6287a46e](https://github.com/open-coder-ai/chock/commit/5a4b6287a46e07f9f856d9bbe10622bd1ff2e021) and catalog [1e60d211c1bb](https://github.com/open-coder-ai/chock-catalog/commit/1e60d211c1bb767152c6ab0167932da06ab3a10f).
