A session is one conversation with an agent: its provider, model and reasoning, its prompts and answers, and its queue. CodeAlta keeps every session in a journal under ~/.alta/sessions/yyyy/mm/dd/<session-id>.jsonl, whatever the provider.
claude in a terminal..alta/config.toml.Every session also belongs to one space.
Closing a tab does not stop a session: running sessions stay in the Explorer, and their queued prompts are still sent. Unsent drafts are saved under ~/.alta/saved_prompts/.
Open a project with Ctrl+O, choose a provider, a model and a reasoning effort, and send a prompt.
To create a session without sending a prompt, click + on the row of a project in CodeAlta Desktop, or New session… in its … menu (Chats has the same button). A form opens beside the row:
Click Create. The session opens in its own tab, titled Starting… until it is ready, and you can keep working meanwhile. For a new worktree, the tab shows each step with its time, and Retry or Close if a step fails. The form remembers your choices for the next session of that project.
A session you reopen shows its history at once, before its provider is ready. While it is idle, you can switch it to another compatible provider.
In CodeAlta Desktop, the links of your messages and of the agent's answers work:
src/Program.cs#L42 or src/Program.cs:42). A relative path is read from the folder the session works in. A file outside every project opens with its folder in the editor. Pictures open; other files that are not text do not.file:// link to an HTML page or a PDF opens in the program your system uses for it.Click a link, or press Enter on it after moving to it with Tab. Ctrl-click (Cmd-click on macOS), Shift-click and middle click work too. A link of more than 2,048 characters, such as a prefilled GitHub link that carries a whole text, does not open: CodeAlta says so and offers to copy its address, which you can paste in your browser. Agents are asked to write file names as such links. The same links work in session notes, issues, pull requests, work items and the Markdown preview of the code editor.
A title you give stays: set it when you create the session, or with Rename in its menu.
A session you did not name takes a short title from its first prompt. Then it follows your choice in Settings > Sessions:
| Choice | The title |
|---|---|
| First prompt | Stays the title of the first prompt. |
| Last message | Follows the first line of the last answer. |
| Chosen by the model | Is chosen by the model, and changes with the subject of the session. This is the default. |
The same page has Suggest the next prompt, Review changes before commit, Add CodeAlta as co-author and Single tab for sessions. The title choice is saved in ~/.alta/config.toml, and a session takes it with its next prompt:
[sessions]
title = "first_prompt" # or "last_message", or "model"
A session can have a choice of its own: ask its agent to name it or to change how it is titled. The agent uses alta session title:
alta session title # the title, who chose it and how the session is titled
alta session title --set "Parser rewrite" # name the session
alta session title --mode last_message # the title of this session follows its last message
alta session title --mode default # this session follows your choice in Settings again
A session started in CodeAlta TUI keeps the title of its first prompt.
Enter sends the prompt when the session is idle, and adds it to the queue when the session is busy, whatever the send options of the prompt. The queue is shown above the status line.
Queued prompts can be edited, repeated, deleted, cleared with F10, or turned into steering when the provider supports it. Enqueue until idle sends at once when the session is already idle.
Steering adds a message to the running turn without waiting for it to end:
Focus on the parser only. Do not refactor unrelated files.
| To steer | CodeAlta Desktop | CodeAlta TUI |
|---|---|---|
| Send the prompt now | Ctrl+Enter (Cmd+Enter on macOS), or Send now (steer) |
Ctrl+Enter |
| Send the first queued prompt now | Steer the running turn in the ⋯ menu of the prompt, with an empty prompt |
Compaction replaces the conversation of a long session with a summary, so that it can go on without reaching the context limit. To compact an idle session, press Ctrl+F11, run /compact, or choose Compact the conversation in the ⋯ menu of the prompt.
/compact is shown dimmed with the reason, and Ctrl+F11 shows the reason in a notice.See Context usage and compaction for automatic compaction and its settings.
In CodeAlta Desktop, a session can continue from an earlier point:
A point is just before the prompt of a turn, or the end of the session (fork only). The prompt of that turn is put in the composer, so you can edit it and send it again.
Open the Fork or rewind window with:
/fork or /rewind, from the search or by typing / in an empty prompt;The window lists the points, newest first: End of the session, then one row per turn. Select one and the window says what the action does there, for example "Turns 4 to 9 (6 turns) are removed from this session". Only my prompts is on at first: it hides the turns started by another agent, an answer to a question or a background job.
| Key | Action |
|---|---|
| type | Filter the turns by the text of their prompt |
Up / Down, PageUp / PageDown |
Move the selection |
Tab (in the filter) |
Switch between Fork and Rewind |
Ctrl+O |
List every turn, or Only my prompts |
Enter |
Fork or rewind at the selected point |
Esc |
Close without changing anything |
After a fork, the new session opens in a tab. A line above its timeline names the session it came from (click it to open it) and how many turns it started with. A fork is a session of its own, not a sub-agent of its source. It reuses the provider's prompt cache of its source, so its first request does not pay for the copied turns again.
After a rewind, a message says how many turns were removed.
When a rewind is not possible now (the session works, a question waits for you, or a command or task runs in its background), the window says why. A fork is still possible.
Agents can fork and rewind too: see Fork or rewind by an agent.
Archive a session you are done with for now but may come back to. In CodeAlta Desktop, choose Archive in the menu of the session: it leaves the Explorer and its tab closes. Its history, project and space are kept.
Ctrl+Alt+B), or in the search (Ctrl+P), where they come last.
Agents use alta session archive <id> and alta session restore <id> (with --with-children for the sessions below), for sessions of their own space only. alta session list shows archived sessions only with --archived. CodeAlta TUI does not list archived sessions.
In CodeAlta Desktop, a project session can move to another project, for example from one worktree of a repository, added as a project, to another one. To keep it in its project and only change the worktree it works in, see Move a session to another worktree. To move it to another space, see Move a session to another space.
Choose Move to project… in the menu of the session (or /move_to_project), then the project, or drag the session onto the project in the Explorer.
~/.claude/projects/. If that fails, a message says so, and the session continues in a new Claude Code conversation that starts with the history.Chats cannot move to a project, and a project session cannot become a chat.
In a git repository, an agent about to commit on the main branch first creates a branch named for the work, such as fix/quoted-keys, and commits there.
Say "commit on main" or "no branch" in a prompt to keep the work where it is. The repository's instructions, such as AGENTS.md, can say it for every session.
Agents end each commit message with this line, beside the lines their provider adds, such as the co-author line of Claude Code, or of Codex when your ChatGPT workspace asks for it:
Co-authored-by: CodeAlta <noreply@codealta.io>
GitHub then shows CodeAlta as a co-author. To turn it off, clear Settings > Sessions > Commits > Add CodeAlta as co-author, or write in ~/.alta/config.toml:
[commits]
co_author = false
A session takes the change with its next prompt. Commits you make yourself do not get the line.
After a turn, the model suggests what you may write next, such as go ahead or run the tests. CodeAlta Desktop shows it in the empty prompt, with Tab or → takes the suggestion above it.
Tab or → to put it in the prompt. Nothing is sent until you press Enter.The model writes the suggestion at the end of its answer, so it costs no extra request, and CodeAlta removes it from the answer you read. It works with every provider.
Suggestions are on by default. To turn them off, clear Settings > Sessions > Prompt suggestions > Suggest the next prompt, or write in ~/.alta/config.toml:
[sessions]
prompt_suggestions = false
Sub-agents never get suggestions, and CodeAlta TUI shows none.
When you give an agent many instructions at once, such as a list of tasks, it first writes them in a file under ~/.alta/scratchpad/. It reads that file again after a compaction and before it reports the work as done, so your instructions survive a long session.
--dev) uses ~/.alta/dev/scratchpad/ instead.