Agents
Junie CLI
Junie CLI and chock: install methods and steps, what it can enforce, and the evidence behind it.
Install methods: none. Agentseam tier block+rewrite, grade best-effort before a tool runs.
Install methods
- Not wired by chock sync: this agent reads its hooks from a config in your home folder, and chock sync writes only inside the repository.
What it can enforce
- Tier
- block+rewrite
- Grade before a tool runs
- best-effort
- Fail mode before a tool runs
- open
- Basis
- vendor-docs
- Recorded
- 2026-08-26
Events
| Event | Can block | Can rewrite | Fail mode |
|---|---|---|---|
session_start | no | no | open |
session_end | no | no | open |
prompt_submit | yes | no | open |
pre_tool | yes | yes | open |
stop | yes | no | open |
Ask support
The engine records no ask claim for this agent.
Hook timeout
The engine records no timeout for this agent.
Test status
- No row in the engine's list of live tests for this agent.
Known limits
Strongest gate here: PreToolUse returns allow/ask/block and carries updatedInput, so block, ask and rewrite are all native. Its event names and field names are Claude Code's by design; project_path is what separates the two payloads. Project-local hooks in <project>/.junie/config.json are IGNORED by default for safety, so a guardrail committed to a repo does not run for a teammate who clones it -- the user file is the only location that takes effect without --config-location. PermissionRequest inverts the usual default: a hook exiting 0 without a blocking decision approves the action and skips the dialog the user would have seen. Its documented answers are that approval and a block (decision block/deny, or exit 2); no ask and no updatedInput are documented there (junie.jetbrains.com/docs/junie-cli-hooks.html, read 2026-10-13), so an escalate or a transform at PermissionRequest is answered as a block, never as an approval. Deliberately not installable on its own -- it shares canonical pre_tool with PreToolUse, and install('junie', ['pre_tool']) wires only PreToolUse, since bundling the two would hand a consumer an approve-by-default gate they did not ask for. Wire it by hand if wanted. StopFailure is observability-only and fires on LLM/API failures, not tool failures, so it is not tool_failure and is left unmapped. Non-zero exits other than 2 are warnings and execution proceeds, so this fails OPEN.
Built from engine 5a4b6287a46e and catalog 1e60d211c1bb.