Turns
Live turns(?)The answer, thoughts, command output and tool progress appear as they happen. A stopped or failed turn keeps what it wrote, and the app shows how each turn ended. [x] [x](?)Cut-short turn: shown on read; live only as streamed tokens [x](?)Thoughts: fold to "Thinking..." until expanded, in Pi's own componentCut-short turn: the partial answer staysDone: the working indicator clears [x](?)Stream: text and thinkingProgress: the status line shows the running tool and a Codex command's output tail; Leverage streams Claude's Bash output to no clientCut-short turn: kept with an ellipsisFailed: ends with its error as text
Tool cards, sub-agents and background commands(?)Each tool call is its own card and a file edit is a diff. You can follow a sub-agent's steps on their own, and a background command, like a dev server, shows as running until it ends. [x] [x](?)Cards: read, web and image cards untested [~](?)Cards: Pi's own, with Leverage renderers: diffs, todos, plan, Task steps, Read trimBackground: the card says running until its task settlesSub-agents: steps listed inside the Task card, not a child session [x](?)Cards: Bash, Read, Edit and Write as Claude Code's own; an edit as a diff with context at its line; other tools as named stand-insBackground: the status line counts them; a notice marks each start and endSub-agents: Claude Code's own agents: the Agent card, its list, each one's steps in its view; the report comes back as Claude Code's agents do
Questions, plans and approvals(?)The agent asks you to pick an option, approve a plan, or allow a call: once, for the session, or always. A dismissed card can come back and an open one returns on reopen. Viewers see the wait but are never asked, and a card goes away when someone loses edit access. [~](?)Role change: stops asking a demoted person, but does not take the card back [x](?)Sub-agent card: sits on its own session, so Reject takes a reasonAlways: asks the scope in a form [x](?)Questions: options as a card; the plan in full, and the review approves or asks for changesApprovals: the dialog opens when the request arrives; F4 asks again; only the choices the person may makeRole change: closes an open card when write access goes [~](?)Questions: Claude Code's own dialog; a plan review asks approve or request changesApprovals: Claude Code's own dialog when the turn waits, once per window; /leverage approvals asks again; text under Other rejects with that reasonViewers: the status line shows the waitRole change: an open dialog stays; Leverage refuses its answer
Shared messages and images(?)Each prompt shows who sent it and its images, and a teammate's prompt appears as soon as they send it. You can attach an image to yours. [x](?)Images: refuses local paths [x](?)Images: takes data: URLs [x](?)Messages: names, delivery state and inline images; mid-turn messages kept on reopenImages: Ctrl+V and dragged files, up to 20 MB [~](?)Teammate's prompt: opens a turn under their name and gives an image count; Claude Code cannot draw themImages: pasted images go with the promptOthers' messages: checked every 1.5 s
Stop, steer, queue and compact(?)Stop a turn. Your prompt shows at once and steers a running turn. Prompts sent while it is busy wait in a queue you can list, take back or send now. Compact a long session and see when it happened. [x] [x] [~](?)Send: shows before Leverage echoes itQueue: Alt+Enter queues a follow-up and Alt+Q takes them all back; no send nowCompact: one card, Compacting until it ends [x](?)Stop: Esc stops the Leverage turnSteer: Enter over a running turn; a teammate's steer shows as a noticeQueue: Claude Code's own: ctrl+x enter queues and can be taken back, Enter sends now; /leverage queue handles what other apps queuedCompact: /compact; a notice shows each one
Model and context(?)Pick the model and effort, start new sessions on your last pick, and see how much context the session uses. [x](?)Default: the pick it shares with OpenCode [x](?)Default: the pick it shares with Codex [x](?)Context: in the footer, as Pi shows its ownModel: takes effect with your next messageDefault: the model used last [~](?)Context: the meter reads Leverage's tokens against Claude Code's own windowModel: /leverage model, keeping the pick Codex and OpenCode share
Sessions
Session list(?)Browse sessions in the spaces you chose, page by page, and search them. The list updates live as sessions are made, renamed, archived or shared with you. Each space is a folder you can start a session in, and titles lead with their repository or #space. [x](?)Titles: n/a; groups threads under their folder [x](?)Spaces: /api/opencode/<space> opens one space, from any local folder [~](?)List: scoped by Settings, searched locally, not pagedLive: the picker follows liveSpaces: F1 or --leverage-directory; the picker shows each session's folderTitles: n/a; shows #space or the repository beside each title [x](?)List: the /leverage pane, scoped by Settings, searches titles, lists a space past its first eight on requestLive: read every 5 sSpaces: leverage claude <space>; the first prompt starts a session thereTitles: n/a; grouped under their space
Open, history and manage(?)Open a session and page back through all of it; opening marks it read everywhere. Rename, archive and restore. The app names new sessions and messages itself, so a retry never makes a duplicate. [x](?)Ids: n/a; no id field for a new thread [x](?)Rename: stores the title alone [~](?)History: the latest 200 rows inline; a pager walks back 50 a pageRead: once, when the view opensManage: the open session, or Tab in the pickerIds: message ids from the client; session ids from the server, one session per request [x](?)History: opening draws the whole session as Claude Code's own turnsManage: /rename, /leverage archive and restoreIds: the window names a new session and each message
Unsupported actions refused(?)Actions Leverage does not support, like fork or rollback, fail with a clear message instead of breaking the app. [x](?)Fork, revert, rollback, delete, review and file writes are refused. [x](?)Fork, revert, rollback, delete, review, file writes, new worktrees and new repositories are refused. [x](?)Fork and ! are refused; /tree opens /leverage history; /model, /resume, /new, /name and /compact go to Leverage. [~](?)/compact, /rename and /resume act on Leverage or point to /leverage; ! runs on this machine.
Files and tools
Files and outputs(?)Browse and read space files, see the session's sandbox files, find a file by name, and open or save the files a turn produced. [~](?)Find: searches space folders and the workspace root; repository and task folders answer emptySession files: also roots a desktop project thread at its project [x] [x](?)Files: /leverage files, every folder the session has, search by nameOutputs: /leverage outputs reads or saves each file [x](?)Files: /leverage files, read and save; before a session on the space, in a session its folder holds the space's filesFind: /leverage findOutputs: /leverage outputs, then read or save
Shell and terminals(?)Run one command in the session's sandbox, or open an interactive shell there. [~](?)One-off: refused; its terminals cover this [x] [ ](?)One-off: ! refused; ask the agent to run itTerminals: none [~](?)One-off: /leverage run; ! still runs on this machineTerminals: none
Git status and pull requests(?)See which files changed in each repository, and the pull request for the work. [x] [x](?)Changes: the Desktop review panel shows the folder's changes, from its newest session; a repository folder also shows its branchPull requests: !gh pr create, list and view open and read the session's pull request [x](?)/leverage changes: the branch, the diff and the pull request. [x](?)/leverage changes: each repository's changed files, what the pull request lacks, and the pull request.
Skills and connectors(?)See the workspace's skills and run one, and see the connected tools, like GitHub or Slack, the agent can use. [x] [~](?)Skills: listed, but none can run [x](?)Skills: /leverage skills lists the folder's skills and puts one in the composerConnectors: /leverage connectors [x](?)Skills: /leverage skills lists; /leverage skill sends a prompt that loads oneConnectors: /leverage connectors