A worktree is removable when it isn't the main checkout, isn't locked, has no changed or untracked files, has no process running in it, and its branch is merged (an ancestor) or a merged PR contains its HEAD. Removing runs git worktree remove (not forced) and keeps the branch.
Port reservations
Reserve a fixed port per project or worktree: free_port (MCP) and /api/free-ports won't hand it to anyone else, and offer it first when asked with for=<name>. Nothing is stopped.