Docs
Jan Agent
Using Jan Agent

Using Jan Agent

Running jan with no subcommand opens the console. This is the main way to use Jan Agent.


jan # the current directory
jan --project ~/app # somewhere else
jan --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

RegionWhat it shows
HeaderModel, reasoning effort, clock, turn count, context usage, throughput, state
TranscriptThe conversation, with tool calls folded into summary rows
ReceiptPer turn: context sent, tokens produced, elapsed, rate
InputWhere you type
FooterWorking 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:

KeyWhereDefaultWhat it does
[agent].show_reasoningagent.tomlfalseUnfold every reasoning block in the transcript by default. Still folds when off; Ctrl+O or a click expands a block either way
[agent].send_reasoningagent.tomltrueResend 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.tomltrueTreat <thinking> tags in model content as reasoning (folded and resendable). Off renders them as ordinary prose
stream_reasoning~/.jan/config.tomltrueStream 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.

Next