Claude Code Sessions

A session of Claude Code is a conversation that the Claude Code CLI keeps in its own transcript, under ~/.claude/projects/. The Claude Code extension of VS Code and claude in a terminal can continue the same conversation. CodeAlta Desktop works alongside them:

  • it lists the conversations started in VS Code or a terminal, and continues them;
  • it asks before it continues a conversation that another program has open;
  • it adds to a session the turns made in the other program;
  • it opens its sessions in VS Code or a terminal in one click.

For Remote Control from claude.ai or the Claude app, see Remote Control.

Conversations from VS Code

When the space the window shows has a Claude Code provider, the Explorer lists the Claude Code conversations that no CodeAlta session continues:

  • From Claude Code (N), at the end of the sessions of a project, lists the conversations of that project.
  • From Claude Code, no project (N), after the projects, lists the others.

Both groups start closed, and CodeAlta remembers whether you opened them. With several Claude Code accounts in the space, each row shows the logo of its provider, and that provider is used to preview, import or open it.

The folder a conversation started in decides where it is listed:

The conversation started in It is listed under
the folder of a project, a subfolder, or a worktree Claude Code made in it (claude -w) that project (the deepest one, when projects are nested)
another checkout of the repository of a project, such as a worktree the project whose sessions work in that checkout, else the project at the main checkout, else the first project of that repository
a folder of another repository inside a project folder that project
anything else: a removed worktree, your home folder, a WSL folder, a repository that is not a project no project
  • What is listed is what VS Code lists: conversations with a title or a prompt, newest first, among the newest 5,000 under ~/.claude/projects. Not listed: conversations a CodeAlta session continues (archived ones included), conversations run through the Claude Code SDK (claude -p, and CodeAlta itself), background sessions of Claude Code, and conversations continued in another one.
  • A group shows 20 conversations; Show more… adds 50 at a time.
  • Each row has the title, the time of the last change, and an icon for where it started (VS Code, a terminal or another program). A label says where it started when that is not the project folder. An eye says another Claude process works on it now; a quieter arrow says it is merely open there.
  • The menu of a row (right-click, Shift+F10 or …) has Open preview, Import, Import into project…, Open in VS Code, Copy resume command and Run in terminal (not for a conversation of no project). Nothing in it deletes a conversation.
  • Ctrl+P finds these conversations by title, project or folder, and Filter sessions at the top of the Explorer narrows the groups.

Preview a conversation

Click a row to preview the conversation in a tab with an italic title. Like a tab you only look at, the next preview takes its place, and it is not reopened at the next start.

  • The conversation is read-only, latest turns first: scroll up, or click Load all messages. Pictures show as [Image].
  • A banner in place of the prompt says where the conversation started and whether another Claude process has it open now.
  • Your first message continues it in names the project: the one that lists it, or, for a conversation of no project, the project the window shows. Choose another project there before you send.
  • The preview reads the conversation again every few seconds, so turns made in VS Code appear in it.
  • A conversation larger than 64 MiB is not previewed: continue it in CodeAlta, or open it in VS Code.

Continue in CodeAlta

To continue a conversation, write in the prompt of its preview and press Enter. Continue in CodeAlta, or a click on the banner, puts the keyboard in the prompt. To import it without a message, choose Import in the menu of its row, or drag the row onto any project.

CodeAlta then creates a session in that project with the turns of the conversation, and sends your message there:

  • The session belongs to the space the window shows, with that space's Claude Code provider. It has the title of the conversation, and the default model, effort and permission mode of the provider.
  • It works in the worktree the conversation was last in, if that worktree still exists in the project; otherwise in the project folder.
  • Its imported turns are marked in VS Code or in a terminal, and Statistics do not count them.
  • The transcript of Claude Code is read, never moved: VS Code keeps the conversation, and you can go on in either program.
  • The conversation leaves the group. Delete the session and it is listed again, CodeAlta's turns included.
  • What you write under the preview is never lost. If a session already continues that conversation and is busy or holds a draft, the preview keeps your message, and Open the session shows that session beside it.
  • One conversation is imported at a time; other previews wait and say so.

A conversation open elsewhere

Before each prompt you send, CodeAlta checks whether another Claude process of this computer has the conversation open: VS Code, claude in a terminal, or another application. If one has, the prompt waits and a card above it asks:

Choice What happens
Wait until it is free The card shows Waiting for VS Code to release the conversation…, with Stop the run. The prompt is sent once the other program closes the conversation.
Continue as a copy Claude Code continues a copy. The session follows the copy, and the other program keeps the original.
Open here anyway Both programs write the same conversation. CodeAlta does not ask again while that process keeps it open.
Cancel The run ends as stopped. Your next prompt carries this one with it.
  • If turns were added in the other program while the prompt waited, the prompt is not sent: it goes back into the composer, marked Not sent: the conversation changed while waiting. Send it again: the new turns are added to the session first. If the composer holds a draft, the draft is kept and a message offers the prompt to copy.
  • A background session of Claude Code never gives its conversation away: the card offers only Wait until it is free and Continue as a copy.
  • While Claude Code runs background tasks for the session, Continue as a copy is not offered: it would restart Claude Code and end them.
  • CodeAlta TUI asks the same question in a dialog (Esc cancels). A compaction, or Remote Control connecting, cannot ask: it fails with a message naming the other program.

While another process has the conversation of the session you look at, a banner takes the place of the prompt: Open now in VS Code, or In use now in VS Code (with an eye) while it works on it. Your draft is kept. Click Write a message, or the banner, to turn it into a line above the prompt. The banner comes back when that process starts working, or another process opens the conversation.

VS Code asks the same question when CodeAlta has the conversation open: CodeAlta keeps Claude Code running up to ten minutes after a turn. Open in VS Code, Run in terminal and Copy resume command close it first. claude --resume in a terminal asks nothing.

Turns made elsewhere

When you open a Claude Code session in CodeAlta Desktop, and before each prompt, CodeAlta adds to the session the turns made elsewhere since its last turn. The next turn continues the conversation as it is, without sending anything twice.

  • Such a prompt says where it was made: in VS Code, in a terminal or in another application. A compaction made there is a notice, such as "The conversation was compacted in VS Code."
  • They are not turns of CodeAlta: Statistics do not count them or their cost.
  • They are added once the session is idle: not while it works, has queued prompts, waits for an answer, has background tasks of Claude Code or has Remote Control on, nor while the other program is in the middle of a turn.
  • If the conversation was rewound or resumed at an earlier point in the other program, the timeline says "This conversation was changed outside CodeAlta in a way it cannot follow; the model has the full conversation." Claude Code still has the whole conversation; only the timeline misses the change.

Open in VS Code

Once Claude Code has answered its first prompt, the menu of a Claude Code session in the Explorer has three more commands. The search has them for the selected session (/open_in_vscode, /run_in_terminal, /copy_resume_command):

Command What it does
Open in VS Code Opens the conversation in the Claude Code extension of VS Code.
Run in terminal Opens a terminal in the folder of the session and runs claude --resume <id>.
Copy resume command Copies claude --resume <id>. Run it in the folder of the session: Claude Code looks for the conversation in the folder it runs in.

These commands first close the Claude Code process CodeAlta keeps for the session. They cannot while the session works, waits for an answer, has Claude Code background tasks or has Remote Control on: Open in VS Code and Run in terminal then refuse and say what to do, and Copy resume command copies with a warning. A prompt you send in CodeAlta afterwards continues after the turns made in VS Code or the terminal.

A provider with its own Account folder (several accounts) keeps its conversations there:

  • The resume command sets CLAUDE_CONFIG_DIR first: $env:CLAUDE_CONFIG_DIR="$HOME\.claude-work"; claude --resume <id> in PowerShell on Windows, CLAUDE_CONFIG_DIR="$HOME/.claude-work" claude --resume <id> in a POSIX shell.
  • Run in terminal types it only in a shell that takes that form (PowerShell on Windows; bash, zsh, sh, dash, ksh or fish elsewhere).
  • Open in VS Code is refused: VS Code looks for the conversation in its own account folder (its claudeCode.environmentVariables setting sets it for every conversation). Use the other two commands.

Session Info has a Claude Code conversation row: the identifier of the conversation, a copy button, and Open now in VS Code (or in a terminal) while another program has it open.

VS Code does not list CodeAlta's sessions: it leaves out conversations run through the Claude Code SDK, and has no setting to show them. Use Open in VS Code. A conversation started in VS Code and continued in CodeAlta stays in its list, with CodeAlta's turns.