Headless automation
Use --print for a single non-interactive prompt:
mj --print "summarize the current diff"git diff | mj --print -If the prompt value is omitted or -, Mjolnir reads standard input.
Permission behavior
Section titled “Permission behavior”Headless mode defaults to --permission-mode manual, which rejects prompts
instead of hanging. auto can approve supported file changes but rejects shell
execution; yolo approves everything and belongs only in disposable scope.
mj --cwd /tmp/eval \ --print \ --permission-mode manual \ "inspect the project without changing it"Output formats
Section titled “Output formats”textprints Thor’s final result.jsonemits one object withsession_id,resumed,result,stop_reason,usage,council_usage, anderrorfields.stream-jsonemits newline-delimited typed records followed by a finalresultrecord.
Stream records can include connected, session_started, agent messages and
thoughts, tool calls and updates, permissions, reviews, warnings, errors, and
the result. Council activity carries actor labels so Thor, Eitri, and Loki
remain attributable.
mj --print --output-format stream-json "summarize this repository" \ | jq -c 'select(.type == "result" or .actor != null)'Treat the machine-readable record shape as an integration contract for the current release, not an unversioned promise that fields will never grow.
One-shot role selection
Section titled “One-shot role selection”--thor MODEL, --loki MODEL|disabled, and --eitri MODEL|disabled override
the saved Council for one invocation. They require explicit IDs and are never
written back to the config file.
For a controlled first run, use the 10-minute evaluation. For networked access to an interactive Council, continue with Remote control.