## Why Currently all tool instances bind-mount the host repository directory, giving containers live access to the working copy. Users need the ability to launch instances with an isolated fresh clone instead — useful for experimentation, clean-room development, or running tools that modify files without affecting the host copy. Additionally, containers need SSH key access to perform git operations (push/pull) inside the clone. ## What Changes - **Repository-level SSH key assignment**: Each `GitRepository` can be associated with an SSH key (used for cloning and container git access). Configurable at creation time and editable later. - **Clone mode for tool instances**: When creating a tool instance, users can choose between: - **Mount** (default): Bind-mount the host repository directory (current behavior) - **Clone**: Clone the repository into the instance directory with full history - **Branch selection**: When clone mode is selected, users can specify a branch (defaults to `main`). - **SSH key mounting**: The repository's SSH key is decrypted and mounted into the container's `~/.ssh/` directory, enabling git operations inside the container. - **Dirty check on delete**: When deleting a clone-mode instance, check for uncommitted changes in the cloned repository. If changes exist, warn the user and require confirmation before deletion. - **Frontend UI updates**: Sessions page gets a repository access mode selector (mount/clone), branch input, and SSH key selector when clone is chosen. - **Backend API updates**: `POST /instances` accepts `clone_mode` and `branch`; new endpoint for updating repository SSH key. - **Database migrations**: Add `ssh_key_id` to `git_repositories`, `clone_mode` and `branch` to `tool_instances`. ## Capabilities ### New Capabilities - `repo-clone-mode`: Repository clone mode with host-side cloning, branch selection, and SSH key mounting for container git access. ### Modified Capabilities - `git-repo`: Add `ssh_key_id` field and API for associating SSH keys with repositories. - `tool-instances`: Extend instance creation to support `clone_mode` and `branch`, mount SSH keys at startup, and perform dirty check on deletion. ## Impact - **Database**: Migrations for `git_repositories.ssh_key_id`, `tool_instances.clone_mode`, `tool_instances.branch` - **Backend API**: `POST /instances` schema change, new `PATCH /repositories/{id}/ssh-key` endpoint, instance delete logic update - **Frontend**: SessionsPage form additions, confirmation modal for dirty delete - **Docker**: Dynamic SSH key volume injection via `_modify_compose_file` - **Tool types**: Built-in tool images assumed to have git installed (code-server, jupyter do; opencode template already installs git)