Using Jan Agent
Running jan with no subcommand opens the console. This is the main way to use Jan Agent.
jan # the current directoryjan --project ~/app # somewhere elsejan --task "..." # with a first message already sent
The screen
jan agent tokamak-1-preview effort medium 10:40:49 turn 1/400 ctx 6K/128K 30.1/s [ready]───────────────────────────────────────────────────────────────────────────────────── MCP ready: sequential-thinking, serper > add a --version flag │ ✓ Read 3 files │ ✓ Edited src/cli.rs Done - the flag is wired up and documented. 2026-07-29 11:32:02 ↑ 43K ↓ 1.1K ⏱ 1.8s ⚡ 109.8/s───────────────────────────────────────────────────────────────────────────────────── > Type here to chat with agent📂 ~/code/app ⎇ main
| Region | What it shows |
|---|---|
| Header | Model, reasoning effort, clock, turn count, context usage, throughput, state |
| Transcript | The conversation, with tool calls folded into summary rows |
| Receipt | Per turn: context sent, tokens produced, elapsed, rate |
| Input | Where you type |
| Footer | Working directory and git branch |
Tool rows fold to one line each. Ctrl+O expands them all, or click a row to expand just that one.
A turn
You type, the agent works, and it stops when it has an answer or needs you.
While it runs, each tool call appears as it happens. A large write previews the file as it streams
in, so you can see what's being produced before it lands. Esc cancels the turn.
Type while it's working and your message queues rather than being dropped - see Sessions.
Reasoning
While a model works it may emit a chain of thought before it lands on an answer. By default the
console folds that reasoning into a summary row instead of dumping it into the transcript. The
header shows where it is: [thinking] while a reasoning block streams, then [thought for Ns]
once it closes. With folding on, an open block also streams its last few lines into the live tail,
so you can watch the thought form without pushing the answer off the screen.
Ctrl+O expands every folded reasoning block, or click a row to expand just that one.
Two knobs in agent.toml and two in ~/.jan/config.toml tune this:
| Key | Where | Default | What it does |
|---|---|---|---|
[agent].show_reasoning | agent.toml | false | Unfold every reasoning block in the transcript by default. Still folds when off; Ctrl+O or a click expands a block either way |
[agent].send_reasoning | agent.toml | true | Resend a prior turn's reasoning to the model with the conversation. Turn off for an upstream that rejects the field (Groq), or to keep chains of thought out of the context budget |
think_tags | ~/.jan/config.toml | true | Treat <thinking> tags in model content as reasoning (folded and resendable). Off renders them as ordinary prose |
stream_reasoning | ~/.jan/config.toml | true | Stream an open reasoning block's last lines into the live tail. Off shows only the [thinking] badge |
See Project config for the agent.toml keys.
Approving work
Writes and shell commands are auto-approved. Start the console with jan --safe and they stop to
ask instead:
write src/cli.rs y yes, once a yes, and don't ask again this session n no
You see a diff for a file change, or the exact command for a shell call. Full detail in Tool permissions.
Getting help
/help inside the console prints every command and keybinding. / alone filters the command list
as you type.