CLI-Only Commands
These commands are exclusive to the terminal CLI interface. They are not available in the Web UI, Telegram bot, or Discord bot -- they rely on the local terminal process and have no server-side equivalent. If you try to use them from a non-CLI channel, they will be silently ignored or return an error.
These commands interact directly with the CLI process itself -- reading local files from your machine, controlling the terminal display, printing version metadata, or terminating the process. They don't translate to a request/response API and therefore only make sense in an interactive terminal session.
Command Reference
| Command | Arguments | Description |
|---|---|---|
/version | none | Print the current CLI-JAW version string |
/quit | none | Gracefully exit the CLI-JAW process |
/q | none | Alias for /quit |
/file | <path> [caption] | Attach a local file to the conversation (hidden from display) |
/ide | pop | on | off | Control the IDE diff view panel |
/version
Prints the installed CLI-JAW version, build hash, and runtime information to the terminal. Useful for bug reports and verifying that an update succeeded.
Syntax
/version
Arguments
None. This command takes no arguments or flags.
Output
cli-jaw v2.14.0 (build a3f8c1d)
node: v22.11.0 | platform: darwin-arm64
config: ~/.cli-jaw/config.yaml
Example Usage
# Check your version before reporting an issue
/version
# Pipe to clipboard (in your shell, not inside a jaw session)
jaw --version | pbcopy
"버전 확인해줘" -- The assistant will run /version and report the result. You can also say "지금 어떤 버전 쓰고 있어?" for the same effect.
/quit, /q
Gracefully shuts down the CLI-JAW process. This saves the current conversation to the session log, flushes any pending memory writes, and exits the Node.js process with code 0. /q is a short alias that behaves identically.
Syntax
/quit
/q
Arguments
None. This command takes no arguments or flags.
Behavior
- Session save -- The current conversation is persisted to
~/.cli-jaw/sessions/so it can be resumed later with/session load. - Memory flush -- Any in-flight memory writes are committed before exit.
- Clean exit -- The process exits with code
0. If something blocks exit for more than 5 seconds, the process force-terminates. - No confirmation -- The command exits immediately without prompting "are you sure?"
Example Usage
# End the session
/quit
# Same thing, shorter
/q
"종료해줘" or "나갈게" -- The assistant recognizes natural-language exit intents and runs /quit on your behalf. You can also simply press Ctrl+C twice for an immediate kill, but that skips the graceful flush.
/file
Attaches a local file to the current conversation context. The file is read from disk and injected into the message history as a hidden attachment -- it does not render visually in the terminal output, but the AI model receives its full content. This is useful for feeding documents, images, or data files into the conversation without cluttering the display.
Syntax
/file <path> [caption]
Arguments
| Argument | Required | Description |
|---|---|---|
<path> | Yes | Absolute or relative path to the file. Supports ~ expansion. Glob patterns are not supported -- attach one file per command. |
[caption] | No | Optional description appended as context. If omitted, only the file content is sent. |
Supported File Types
| Category | Extensions |
|---|---|
| Text / Code | .txt, .md, .py, .js, .ts, .json, .yaml, .toml, .csv, .html, .css, and other plain-text formats |
| Images | .png, .jpg, .jpeg, .gif, .webp, .svg |
| Documents | .pdf, .docx, .xlsx, .pptx, .hwpx |
| Audio | .mp3, .wav, .m4a, .ogg |
Behavior
- Hidden attachment -- The file content is added to the AI context but not printed to the terminal. This keeps the display clean when attaching large files.
- Size limit -- Files exceeding the model's context window are truncated with a warning. For very large files, consider splitting or summarizing first.
- Relative paths -- Resolved relative to the current working directory (the directory from which you launched
jaw). - Binary files -- Images and documents are base64-encoded. Unsupported binary formats produce an error.
Example Usage
# Attach a source file for review
/file src/auth/middleware.ts Review this middleware for security issues
# Attach a screenshot for analysis
/file ~/Desktop/screenshot.png What error is shown here?
# Attach a CSV for data analysis
/file ./sales-q4.csv
# Attach a PDF document
/file ~/Documents/contract.pdf 이 계약서 요약해줘
"이 파일 봐줘 -- ~/report.pdf" -- The assistant will run /file ~/report.pdf and then analyze the content. You can also say "src/index.ts 파일 첨부해서 리뷰해줘" and the assistant will attach and review it in one step.
/ide
Controls the IDE diff view panel. When enabled, code changes proposed by the assistant are displayed in a side-by-side or unified diff format similar to VS Code's diff editor, rather than inline in the chat. This makes it easier to review multi-file changes before accepting them.
Syntax
/ide <mode>
Arguments
| Argument | Description |
|---|---|
pop | Open the diff view in a new terminal window (pop-out). Requires a supported terminal emulator (iTerm2, Wezterm, or tmux). |
on | Enable inline diff view in the current terminal. Diffs appear in a split pane below the chat. |
off | Disable the diff view. Code changes return to inline display within the chat output. |
Modes Explained
pop-- Spawns a separate terminal window dedicated to showing diffs. Best for multi-monitor setups where you want the diff always visible alongside the chat. The pop-out window updates in real time as the assistant proposes changes.on-- Splits the current terminal vertically. The top half shows the conversation; the bottom half shows the active diff. Works in any terminal but reduces available chat space.off-- Returns to the default behavior where code blocks and diffs are rendered inline in the conversation stream.
Terminal Requirements
| Mode | Requirement |
|---|---|
pop | iTerm2, Wezterm, or tmux. Falls back to on if no supported emulator is detected. |
on | Any terminal with at least 80 columns and 40 rows recommended. |
off | No requirements. |
Example Usage
# Open diff view in a separate window
/ide pop
# Enable inline diff view
/ide on
# Turn off diff view
/ide off
# Typical workflow: enable diff, ask for changes, review
/ide on
"이 함수 리팩터링해줘 -- async/await으로 바꿔줘"
# Review the diff in the panel, then accept or reject
"IDE 모드 켜줘" -- Activates /ide on. You can also say "diff 뷰 팝업으로 열어줘" to trigger /ide pop, or "IDE 모드 꺼줘" for /ide off.
Platform Availability
The table below clarifies where each command works and where it does not:
| Command | CLI | Web UI | Telegram | Discord | Electron |
|---|---|---|---|---|---|
/version | Yes | No | No | No | Yes* |
/quit, /q | Yes | No | No | No | No |
/file | Yes | No | No | No | Yes* |
/ide | Yes | No | No | No | Yes* |
* Electron desktop app includes an embedded terminal that supports CLI-only commands. The Web UI served via browser does not.
Troubleshooting
/file says "file not found"
Check that the path is correct relative to the directory where you launched jaw. Use an absolute path if unsure:
# Instead of relative path
/file ./data/report.csv
# Use absolute path
/file /Users/jun/projects/data/report.csv
/ide pop does nothing
The pop mode requires iTerm2, Wezterm, or tmux. If you are using a different terminal emulator (Terminal.app, Alacritty, Hyper), the command silently falls back to on mode. Check your terminal:
echo $TERM_PROGRAM
# Should output: iTerm.app, WezTerm, or tmux
/quit hangs
If /quit does not exit within 5 seconds, there may be a pending network request or file write. Press Ctrl+C to force-kill the process. Check ~/.cli-jaw/sessions/ to verify the session was saved.