[{"data":1,"prerenderedAt":49},["ShallowReactive",2],{"doc:en:settings-projects":3},{"title":4,"lede":5,"html":6,"headings":7},"Settings: Projects","The “Projects” tab sets one project at a time: its name and color, its worktrees, how its commits are written, its setup, teardown, and launch commands, and its agents’ access to Escouade.","\u003Ch2 id=\"choosing-the-project\">Choosing the project\u003C\u002Fh2>\n\u003Cp>The tab acts on the project chosen in the “Project” row, under the header of the \u003Ca href=\"\u002Fen\u002Fdocs\u002Fsettings-application\u002F\">settings window\u003C\u002Fa>: one button per open project. What you change on a project stays in the draft when you switch to another, and everything is saved together with “Save”.\u003C\u002Fp>\n\u003Ch2 id=\"identity\">Identity\u003C\u002Fh2>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Setting\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003Cth>Default\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>“Name”\u003C\u002Ftd>\n\u003Ctd>The project’s name, as its tab and the project picker show it. It can’t be left empty: “Save” is blocked until it has a name.\u003C\u002Ftd>\n\u003Ctd>The name given at creation, the folder’s name if you gave none\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Folder”\u003C\u002Ftd>\n\u003Ctd>The project’s folder, shown but not editable. The “Open” button opens it with the system’s file manager.\u003C\u002Ftd>\n\u003Ctd>—\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Color”\u003C\u002Ftd>\n\u003Ctd>One swatch out of 14 (13 hues and a neutral tone). The color identifies the project and tints the interface while it is shown.\u003C\u002Ftd>\n\u003Ctd>The first color no project has taken, at creation\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Preferred account”\u003C\u002Ftd>\n\u003Ctd>The account new agents and tickets of the project start on. Only visible with several accounts. Choices: “Automatic” (the first active account under the pause threshold, in the order of the accounts) or one of the active accounts that serve this project.\u003C\u002Ftd>\n\u003Ctd>“Automatic”\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>Accounts are described in \u003Ca href=\"\u002Fen\u002Fdocs\u002Faccounts\u002F\">accounts\u003C\u002Fa> and set in the \u003Ca href=\"\u002Fen\u002Fdocs\u002Fsettings-accounts\u002F\">“Claude accounts”\u003C\u002Fa> tab. An account switched off after it was chosen stays shown with “(inactive)” as long as it is chosen, and is ignored in the meantime.\u003C\u002Fp>\n\u003Ch2 id=\"git\">Git\u003C\u002Fh2>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Setting\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003Cth>Default\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>“One worktree per agent”\u003C\u002Ftd>\n\u003Ctd>Keeps each new agent’s changes in its own branch.\u003C\u002Ftd>\n\u003Ctd>Chosen when the project is created (off until you tick it)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Worktrees folder”\u003C\u002Ftd>\n\u003Ctd>Where the project’s agent worktrees go.\u003C\u002Ftd>\n\u003Ctd>Blank: \u003Ccode class=\"key\">.claude\u002Fworktrees\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Agents’ branch prefix”\u003C\u002Ftd>\n\u003Ctd>The start of a new agent’s branch name: the prefix followed by the agent’s name. Blank, the branch takes the agent’s name alone.\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">escouade\u002F\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Tickets’ branch prefix”\u003C\u002Ftd>\n\u003Ctd>The start of a ticket’s branch name, the one its pull request comes from: the prefix followed by the ticket’s key. Blank, the branch takes the key alone.\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">ticket\u002F\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Files copied into worktrees”\u003C\u002Ftd>\n\u003Ctd>The project files copied into each new worktree, one pattern per line.\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">.env*\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Commit”\u003C\u002Ftd>\n\u003Ctd>Who writes the commits asked for from the files panel.\u003C\u002Ftd>\n\u003Ctd>“Written by the agent”\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>Worktrees are explained in \u003Ca href=\"\u002Fen\u002Fdocs\u002Fworktrees\u002F\">worktrees\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3 id=\"worktrees-folder\">Worktrees folder\u003C\u002Fh3>\n\u003Cp>You can write a path relative to the project’s folder (\u003Ccode class=\"key\">..\u002Fapp-worktrees\u003C\u002Fcode>, \u003Ccode class=\"key\">.worktrees\u003C\u002Fcode>), a path relative to your home folder (\u003Ccode class=\"key\">~\u002Fworktrees\u002Fapp\u003C\u002Fcode>), or a full path. The quotes that “Copy as path” adds are removed. Left blank, the field means \u003Ccode class=\"key\">.claude\u002Fworktrees\u003C\u002Fcode>, as \u003Ccode>claude --worktree\u003C\u002Fcode> does.\u003C\u002Fp>\n\u003Cp>Under the field, a line says where the next worktree will go (“The next one:” followed by the path, with \u003Ccode class=\"key\">&lt;name&gt;\u003C\u002Fcode> standing for the agent’s name). Worktrees already created stay where they are. Outside the project, the Claude Code view first asks you to trust each of them.\u003C\u002Fp>\n\u003Cp>A folder that is refused replaces that line with a red message and blocks “Save”:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>the project’s own folder;\u003C\u002Fli>\n\u003Cli>a folder that holds the project’s: pick one beside it (\u003Ccode class=\"key\">..\u002Fapp-worktrees\u003C\u002Fcode>) or in it (\u003Ccode class=\"key\">.worktrees\u003C\u002Fcode>);\u003C\u002Fli>\n\u003Cli>a folder inside a \u003Ccode class=\"key\">.git\u003C\u002Fcode> folder;\u003C\u002Fli>\n\u003Cli>on Windows, a path that is neither relative nor full, such as \u003Ccode class=\"key\">D:wt\u003C\u002Fcode> or \u003Ccode class=\"key\">\\wt\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"branch-prefixes\">Branch prefixes\u003C\u002Fh3>\n\u003Cp>The branch names of agents and tickets are the ones that go to the remote repository with a pull request: the prefixes let you follow a repository’s convention. \u003Ca href=\"\u002Fen\u002Fdocs\u002Fbranches\u002F\">Branches\u003C\u002Fa> are described separately. Under each field, a line shows the resulting form.\u003C\u002Fp>\n\u003Cp>A prefix that wouldn’t give a valid branch name is refused as you type, and blocks “Save”. These are refused: a space, \u003Ccode class=\"key\">..\u003C\u002Fcode>, \u003Ccode class=\"key\">~\u003C\u002Fcode>, \u003Ccode class=\"key\">^\u003C\u002Fcode>, \u003Ccode class=\"key\">:\u003C\u002Fcode>, \u003Ccode class=\"key\">?\u003C\u002Fcode>, \u003Ccode class=\"key\">*\u003C\u002Fcode>, \u003Ccode class=\"key\">[\u003C\u002Fcode>, \u003Ccode class=\"key\">\\\u003C\u002Fcode>, and \u003Ccode class=\"key\">@{\u003C\u002Fcode>; a \u003Ccode class=\"key\">-\u003C\u002Fcode> or a \u003Ccode class=\"key\">\u002F\u003C\u002Fcode> at the start; \u003Ccode class=\"key\">\u002F\u002F\u003C\u002Fcode>; a part of the name that starts with \u003Ccode class=\"key\">.\u003C\u002Fcode> or ends with \u003Ccode class=\"key\">.lock\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3 id=\"files-copied-into-worktrees\">Files copied into worktrees\u003C\u002Fh3>\n\u003Cp>The field is a text area, one pattern per line: \u003Ccode class=\"key\">.env*\u003C\u002Fcode> copies the \u003Ccode class=\"key\">.env\u003C\u002Fcode> files at the root, \u003Ccode class=\"key\">**\u002F.env*\u003C\u002Fcode> those in every folder. Only files git ignores are copied, and they are never committed. Empty lines are ignored.\u003C\u002Fp>\n\u003Ch3 id=\"commit\">Commit\u003C\u002Fh3>\n\u003Cp>This choice concerns the “Commit…” and “Commit all…” buttons of the files panel, described in \u003Ca href=\"\u002Fen\u002Fdocs\u002Fgit\u002F\">Git\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>“Written by the agent”: the agent is asked to commit its changes.\u003C\u002Fli>\n\u003Cli>“Direct, with a suggested message”: Escouade suggests a message, you review it, and you commit yourself.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"mcp-server\">MCP server\u003C\u002Fh2>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Setting\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003Cth>Default\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>“Agents can use Escouade”\u003C\u002Ftd>\n\u003Ctd>The project’s agents read the tickets and the agents, and can create tickets or start other agents, which uses quota. Each agent gets a token of its own. Applies the next time its process starts.\u003C\u002Ftd>\n\u003Ctd>Off\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>The \u003Ca href=\"\u002Fen\u002Fdocs\u002Fmcp\u002F\">MCP server\u003C\u002Fa> runs as soon as a project lets its agents use it, even when “Claude can drive Escouade” is off in the \u003Ca href=\"\u002Fen\u002Fdocs\u002Fsettings-claude-code\u002F\">“Claude Code”\u003C\u002Fa> tab.\u003C\u002Fp>\n\u003Ch2 id=\"worktrees\">Worktrees\u003C\u002Fh2>\n\u003Cp>This group sets the commands Escouade runs when a project worktree opens, and before it is removed. No command is defined at first.\u003C\u002Fp>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Setting\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>“When a worktree opens”\u003C\u002Ftd>\n\u003Ctd>The setup. The commands run in order, before the agent’s first message: dependencies, generated code… Messages wait for them to finish.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Before a worktree is removed”\u003C\u002Ftd>\n\u003Ctd>The teardown. What the setup created outside the worktree (database, containers…); often nothing.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>Each command is a numbered line.\u003C\u002Fp>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Field\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>“Shell”\u003C\u002Ftd>\n\u003Ctd>The shell that runs it, among those the app detects. A new command takes the first one found. A shell the machine doesn’t have shows with “(not found)”.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Command”\u003C\u002Ftd>\n\u003Ctd>The command line, such as \u003Ccode>npm ci\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Subfolder”\u003C\u002Ftd>\n\u003Ctd>The worktree folder it runs in. Blank: its root.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>↑ and ↓\u003C\u002Ftd>\n\u003Ctd>Move the command up or down. \u003Ccode class=\"key\">Alt+↑\u003C\u002Fcode> and \u003Ccode class=\"key\">Alt+↓\u003C\u002Fcode> (\u003Ccode class=\"key\">⌥↑\u003C\u002Fcode> and \u003Ccode class=\"key\">⌥↓\u003C\u002Fcode> on macOS) do the same from any field of the line.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>×\u003C\u002Ftd>\n\u003Ctd>Deletes the command.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>“+ Add a command” adds a line to the list. A command whose command line is empty is not saved.\u003C\u002Fp>\n\u003Cp>These variables are available: \u003Ccode class=\"key\">ESCOUADE_PROJECT_DIR\u003C\u002Fcode> (the project), \u003Ccode>ESCOUADE_WORKTREE_DIR\u003C\u002Fcode>, \u003Ccode class=\"key\">ESCOUADE_BRANCH\u003C\u002Fcode>, and the ports reserved for a ticket (\u003Ccode class=\"key\">ESCOUADE_PORT_BASE\u003C\u002Fcode>, \u003Ccode class=\"key\">ESCOUADE_PORT_END\u003C\u002Fcode>). A failure is reported in the agent’s conversation.\u003C\u002Fp>\n\u003Ch3 id=\"fill-in-automatically\">Fill in automatically\u003C\u002Fh3>\n\u003Cp>The “✦ Fill in automatically” button (“Claude is reading the project…” while it works) asks Claude to suggest the commands. It reads the project (manifests, lockfiles, README…) with read-only tools: it changes nothing and runs nothing. Its commands are written for the first shell detected.\u003C\u002Fp>\n\u003Cp>The suggestion is shown in full, with each command’s shell and folder, under “Suggested worktree commands”. Read each command in full: once saved, they run on their own, the setup when each new worktree opens and the teardown before it is removed.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>“Replace the commands” puts the suggestion in place of the draft’s two lists.\u003C\u002Fli>\n\u003Cli>“Ignore” throws it away.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Nothing is saved before “Save”. A message says how many commands are suggested, and how many Claude left out (invisible characters or a line that is too long). When it finds none, it says “Claude found no command to run for this project.”.\u003C\u002Fp>\n\u003Ch2 id=\"launch\">Launch\u003C\u002Fh2>\n\u003Cp>Launch commands start the project’s servers, watchers, and services. Each one runs in its own terminal, read-only, started from the Launch section of the sidebar. That section’s gear (“Launch commands…”) opens this tab on this group. When the section is empty, its “Configure” and “✦ Suggest commands” links open it too, the second one also starting the fill-in. See \u003Ca href=\"\u002Fen\u002Fdocs\u002Flaunch\u002F\">launch\u003C\u002Fa> and \u003Ca href=\"\u002Fen\u002Fdocs\u002Fterminals\u002F\">terminals\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>With no command, the group says “No commands yet.”. Each command has four fields.\u003C\u002Fp>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Field\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>“Name”\u003C\u002Ftd>\n\u003Ctd>The name shown in the Launch section, such as “Front”. Required.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Shell”\u003C\u002Ftd>\n\u003Ctd>The shell that runs it. A new command takes the first shell found.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Command”\u003C\u002Ftd>\n\u003Ctd>The command line, such as \u003Ccode>npm run dev\u003C\u002Fcode>. Required.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>“Subfolder” (blank = project folder)\u003C\u002Ftd>\n\u003Ctd>The folder, under the project’s, it runs in, such as \u003Ccode class=\"key\">apps\u002Fweb\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>The cross on the right deletes the command, and “+ Add a command” adds one. A command with no name or no command line blocks “Save”.\u003C\u002Fp>\n\u003Cp>“✦ Fill in automatically” works as it does for worktrees. Claude reads the project (manifests, scripts, docker-compose, README…) and suggests the commands to run under “Suggested launch commands”, which “Replace the commands” puts in place of the list.\u003C\u002Fp>\n\u003Ch2 id=\"danger-zone\">Danger zone\u003C\u002Fh2>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Setting\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>“Close the project”\u003C\u002Ftd>\n\u003Ctd>The “Close the project…” button asks for confirmation, then removes the project and its agents from the app, conversations included. The files and worktrees on disk are not touched.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>Closing the project acts right away, without waiting for “Save”, and takes you back to the settings with the draft as it was.\u003C\u002Fp>\n\u003Ch2 id=\"the-project-s-other-settings\">The project’s other settings\u003C\u002Fh2>\n\u003Cp>A project’s links to Jira, Trello, GitHub Issues, and Linear are set in the \u003Ca href=\"\u002Fen\u002Fdocs\u002Fsettings-integrations\u002F\">“Integrations”\u003C\u002Fa> tab. Its Kanban (autopilot, agents, approval) is set in the \u003Ca href=\"\u002Fen\u002Fdocs\u002Fsettings-board\u002F\">“Kanban”\u003C\u002Fa> tab.\u003C\u002Fp>\n",[8,12,15,18,22,25,28,31,34,37,40,43,46],{"id":9,"text":10,"depth":11},"choosing-the-project","Choosing the project",2,{"id":13,"text":14,"depth":11},"identity","Identity",{"id":16,"text":17,"depth":11},"git","Git",{"id":19,"text":20,"depth":21},"worktrees-folder","Worktrees folder",3,{"id":23,"text":24,"depth":21},"branch-prefixes","Branch prefixes",{"id":26,"text":27,"depth":21},"files-copied-into-worktrees","Files copied into worktrees",{"id":29,"text":30,"depth":21},"commit","Commit",{"id":32,"text":33,"depth":11},"mcp-server","MCP server",{"id":35,"text":36,"depth":11},"worktrees","Worktrees",{"id":38,"text":39,"depth":21},"fill-in-automatically","Fill in automatically",{"id":41,"text":42,"depth":11},"launch","Launch",{"id":44,"text":45,"depth":11},"danger-zone","Danger zone",{"id":47,"text":48,"depth":11},"the-project-s-other-settings","The project’s other settings",1791926756583]