[{"data":1,"prerenderedAt":39},["ShallowReactive",2],{"doc:en:data":3},{"title":4,"lede":5,"html":6,"headings":7},"Local data","Everything Escouade keeps on your disk: the ~\u002F.escouade\u002F folder and each of its files, where tokens live, what it reads of Claude Code’s data, and how to back up or reset.","\u003Ch2 id=\"the-data-folder\">The data folder\u003C\u002Fh2>\n\u003Cp>Escouade keeps its data in \u003Ccode class=\"key\">~\u002F.escouade\u002F\u003C\u002Fcode> (\u003Ccode>C:\\Users\\&lt;you&gt;\\.escouade\u003C\u002Fcode> on Windows). Settings › About reminds you of it on the “Local data” line.\u003C\u002Fp>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>File or folder\u003C\u002Fth>\n\u003Cth>Contents\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">settings.json\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The settings.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">state.json\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The projects, the agents (with the ID of their Claude Code session), the Kanban tickets, the autopilot’s pause, and the interface state.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">integrations.json\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The Jira, Trello, GitHub, and Linear accounts, without their tokens (see \u003Ca href=\"#tokens\">Tokens\u003C\u002Fa>).\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">sync-queue.json\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The syncs with those services that are waiting to be retried.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>conversations\u002F&lt;agent&gt;.jsonl\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The log of each conversation, named after the agent’s ID, one operation (an item added or corrected) per line. Deleted with the agent.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">claude\u002F&lt;account&gt;\u002F\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The Claude Code configuration folder of each account added in Settings › Claude accounts: its sign-in and its conversations. Main has none; it uses your own Claude Code’s folder.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">mcp-token.json\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The MCP server’s token for Claude outside Escouade, only when the system keychain refuses it (always on Linux).\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">mcp\u002F&lt;agent&gt;.json\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The MCP configuration of an Escouade agent, with its token. Deleted when its process stops, and each time the app starts and quits.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">tui\u002F&lt;agent&gt;.json\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The hook settings that an agent’s Claude Code view passes to Claude Code. The token isn’t in it: it goes through an environment variable.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>logs\u002F&lt;agent&gt;-setup.log\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The full output of the last setup of an agent’s worktree. Deleted with the agent.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">update.json\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The update being installed, noted for the next start and then deleted.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">stats.db\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The statistics (a SQLite database, with its \u003Ccode class=\"key\">stats.db-wal\u003C\u002Fcode> and \u003Ccode class=\"key\">stats.db-shm\u003C\u002Fcode> files while Escouade runs).\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">telemetry-id\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The random id of this install, for the anonymous usage statistics. Created when you accept them, deleted when you refuse or turn them off.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">app.log\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The app’s log. At startup, if it is over about 5 MB, it becomes \u003Ccode class=\"key\">app.old.log\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">settings.broken.json\u003C\u002Fcode>, \u003Ccode class=\"key\">state.broken.json\u003C\u002Fcode>…\u003C\u002Ftd>\n\u003Ctd>Copies of files the app couldn’t read (see \u003Ca href=\"#an-unreadable-file\">An unreadable file\u003C\u002Fa>).\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch2 id=\"the-old-claude-code-manager-folder\">The old Claude Code Manager folder\u003C\u002Fh2>\n\u003Cp>Escouade used to be called “Claude Code Manager” and kept its data in \u003Ccode>~\u002F.claude-code-manager\u002F\u003C\u002Fcode>. At the first launch that finds it, Escouade moves it to \u003Ccode class=\"key\">~\u002F.escouade\u002F\u003C\u002Fcode> and leaves a \u003Ccode>.migrated-from-claude-code-manager\u003C\u002Fcode> file in it. The web engine’s and window state’s folders, named after the app identifier, follow the same path. In practice, an update keeps your settings, projects, and conversations: see \u003Ca href=\"\u002Fen\u002Fdocs\u002Fupdates\u002F\">updates\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>The rare cases are handled without losing anything:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>A \u003Ccode class=\"key\">~\u002F.escouade\u002F\u003C\u002Fcode> folder that is already there without that file (made by a launch that couldn’t move the old folder) is never deleted: it is set aside under the name \u003Ccode>.escouade.before-migration-\u003C\u002Fcode> followed by a number, and the old folder takes its place.\u003C\u002Fli>\n\u003Cli>If the old folder can’t be moved because a file is still open, Escouade keeps using it and tries again at the next launch.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"choosing-another-folder\">Choosing another folder\u003C\u002Fh2>\n\u003Cp>The \u003Ccode class=\"key\">ESCOUADE_DATA_DIR\u003C\u002Fcode> environment variable, when it is set and not empty, replaces \u003Ccode class=\"key\">~\u002F.escouade\u002F\u003C\u002Fcode> with the folder it names. The old \u003Ccode class=\"key\">CCM_DATA_DIR\u003C\u002Fcode> variable still works, but \u003Ccode class=\"key\">ESCOUADE_DATA_DIR\u003C\u002Fcode> takes precedence. Set it in the terminal you launch Escouade from.\u003C\u002Fp>\n\u003Cp>It is meant for demos and trials. With a separate folder:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Escouade moves nothing from \u003Ccode>~\u002F.claude-code-manager\u002F\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Tokens go to a separate keychain entry (the \u003Ccode>dev.gagnaire.escouade.sandbox\u003C\u002Fcode> service): they never replace yours.\u003C\u002Fli>\n\u003Cli>Another instance can run alongside the one that uses the usual folder.\u003C\u002Fli>\n\u003Cli>The automatic restart for an update is turned off.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"tokens\">Tokens\u003C\u002Fh2>\n\u003Cp>Tokens aren’t in the settings:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Jira, Trello, GitHub, Linear.\u003C\u002Fstrong> Each service’s token is in the system keychain: Windows Credential Manager, macOS Keychain Access. There is one entry per service (\u003Ccode class=\"key\">jira\u003C\u002Fcode>, \u003Ccode class=\"key\">trello\u003C\u002Fcode>, \u003Ccode class=\"key\">github\u003C\u002Fcode>, \u003Ccode class=\"key\">linear\u003C\u002Fcode>) under the \u003Ccode>dev.gagnaire.escouade\u003C\u002Fcode> service. \u003Ccode class=\"key\">integrations.json\u003C\u002Fcode> keeps the rest of the account. When the keychain refuses the entry, Settings › Integrations says so (“System keychain unavailable: the token stays in ~\u002F.escouade\u002Fintegrations.json.”) and the token stays in that file, readable only by you on macOS and Linux.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Linux.\u003C\u002Fstrong> There is no supported keychain: the integration tokens stay in \u003Ccode class=\"key\">integrations.json\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>MCP server.\u003C\u002Fstrong> The token for Claude outside Escouade is in the keychain (an \u003Ccode class=\"key\">mcp\u003C\u002Fcode> entry), otherwise in \u003Ccode class=\"key\">mcp-token.json\u003C\u002Fcode>. Each agent’s is in its \u003Ccode class=\"key\">mcp\u002F&lt;agent&gt;.json\u003C\u002Fcode>, which goes away with its process.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Claude Code’s sign-in.\u003C\u002Fstrong> It isn’t Escouade’s: Claude Code keeps it in each account’s folder (the \u003Ccode class=\"key\">.credentials.json\u003C\u002Fcode> file), and on macOS in the keychain. See \u003Ca href=\"\u002Fen\u002Fdocs\u002Faccounts\u002F\">Claude accounts\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>To remove a token, disconnect the service in Settings › Integrations: its entry leaves the keychain. See \u003Ca href=\"\u002Fen\u002Fdocs\u002Fintegrations\u002F\">integrations\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"what-escouade-reads-of-claude-code\">What Escouade reads of Claude Code\u003C\u002Fh2>\n\u003Cp>Escouade drives Claude Code and keeps its own conversations, but it also relies on Claude Code’s data:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Sessions.\u003C\u002Fstrong> Each agent has a Claude Code session. Escouade notes its ID in \u003Ccode class=\"key\">state.json\u003C\u002Fcode> and runs \u003Ccode>claude --resume\u003C\u002Fcode> on that session when the app restarts or a stopped process picks up again: the agent gets its whole context back. The sessions themselves are in the Claude Code configuration folder of the agent’s account (\u003Ccode class=\"key\">~\u002F.claude\u003C\u002Fcode> by default for Main, \u003Ccode>~\u002F.escouade\u002Fclaude\u002F&lt;account&gt;\u002F\u003C\u002Fcode> for the others), under \u003Ccode class=\"key\">projects\u002F\u003C\u002Fcode>. Deleting an agent removes its conversation from Escouade; the Claude Code session stays on disk. If a session has disappeared, the agent says so (“Claude session not found: a new session will start with your next message.”).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The sign-in, for quotas.\u003C\u002Fstrong> Escouade reads, without writing it, the sign-in that Claude Code keeps for each account, and uses it to ask Anthropic for the account’s quotas. See \u003Ca href=\"\u002Fen\u002Fdocs\u002Fusage\u002F\">quotas\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The transcript, in the Claude Code view.\u003C\u002Fstrong> To follow an agent that runs in Claude Code’s own interface, Escouade reads the session it writes (\u003Ccode>projects\u002F&lt;folder&gt;\u002F&lt;session&gt;.jsonl\u003C\u002Fcode>). See \u003Ca href=\"\u002Fen\u002Fdocs\u002Fclaude-code-view\u002F\">the Claude Code view\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The MCP configuration.\u003C\u002Fstrong> When “Claude can drive Escouade” is on (Settings › Claude Code), Escouade declares its MCP server in the Claude Code configuration of each active account. See \u003Ca href=\"\u002Fen\u002Fdocs\u002Fmcp\u002F\">the MCP server\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>A new account\u003C\u002Fstrong> takes from Main, by link or by copy, its settings, its \u003Ccode class=\"key\">CLAUDE.md\u003C\u002Fcode>, and its skills, agents, commands, plugins, hooks, and output styles. Never its sign-in or its \u003Ccode class=\"key\">.claude.json\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"anonymous-usage-statistics\">Anonymous usage statistics\u003C\u002Fh2>\n\u003Cp>If you accepted them (the first-start question, or the switch in Settings › About), Escouade sends anonymous usage statistics to a server of Escouade’s hosted in France. On your disk they leave only \u003Ccode class=\"key\">telemetry-id\u003C\u002Fcode>, a UUID drawn at random, derived from nothing about your machine or about you. Events wait in memory and are never written to a file.\u003C\u002Fp>\n\u003Cp>The detail of what is sent, what never is, and how to ask for deletion is on the \u003Ca href=\"\u002Fen\u002Fprivacy\u002F\">Privacy\u003C\u002Fa> page. See also the \u003Ca href=\"\u002Fen\u002Fdocs\u002Fsettings-about\u002F\">“About” settings\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"what-isn-t-in-the-folder\">What isn’t in the folder\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Your projects and the agents’ worktrees.\u003C\u002Fstrong> They are yours, in each project: \u003Ccode class=\"key\">.claude\u002Fworktrees\u003C\u002Fcode> by default, or the “Worktrees folder” set for the project. Closing a project doesn’t touch them.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Claude Code’s sessions\u003C\u002Fstrong>, seen above.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The window’s size and position.\u003C\u002Fstrong> The \u003Ccode class=\"key\">.window-state.json\u003C\u002Fcode> file is in the system’s configuration folder, under \u003Ccode>dev.gagnaire.escouade\u003C\u002Fcode>: \u003Ccode>%APPDATA%\\dev.gagnaire.escouade\u003C\u002Fcode> on Windows, \u003Ccode>~\u002FLibrary\u002FApplication Support\u002Fdev.gagnaire.escouade\u003C\u002Fcode> on macOS, \u003Ccode>~\u002F.config\u002Fdev.gagnaire.escouade\u003C\u002Fcode> on Linux.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>A few display preferences\u003C\u002Fstrong>, kept by the app’s web engine: the text you have started in a message field (it survives a restart), the width of the editor’s file tree, the height of the “Plan” banner, how diffs are shown, the statistics period.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"backing-up\">Backing up\u003C\u002Fh2>\n\u003Col>\n\u003Cli>Really quit Escouade: closing the window leaves it in the notification area. Use “Quit” in the menu of its icon.\u003C\u002Fli>\n\u003Cli>Copy the \u003Ccode class=\"key\">~\u002F.escouade\u002F\u003C\u002Fcode> folder.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>The copy holds your settings, projects, tickets, conversations, and statistics. It also holds, under \u003Ccode class=\"key\">claude\u002F\u003C\u002Fcode>, the sign-in of the Claude accounts you added (on Windows and Linux): keep it private.\u003C\u002Fp>\n\u003Cp>To restore it on another machine, put the folder back in the same place, with your projects at the same paths (\u003Ccode class=\"key\">state.json\u003C\u002Fcode> remembers full paths). Three things don’t come along:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>The integration tokens (except on Linux): reconnect each service.\u003C\u002Fli>\n\u003Cli>Main’s sign-in: it is in your Claude Code.\u003C\u002Fli>\n\u003Cli>The agents’ sessions, which are in Claude Code’s folder: without them, an agent starts over with a new session.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"resetting\">Resetting\u003C\u002Fh2>\n\u003Cp>Quit Escouade first, then:\u003C\u002Fp>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>To…\u003C\u002Fth>\n\u003Cth>Do…\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Get the default settings back\u003C\u002Ftd>\n\u003Ctd>Delete \u003Ccode class=\"key\">settings.json\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Erase the statistics\u003C\u002Ftd>\n\u003Ctd>Delete \u003Ccode class=\"key\">stats.db\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Start over with no project, agent, or ticket\u003C\u002Ftd>\n\u003Ctd>Delete \u003Ccode class=\"key\">state.json\u003C\u002Fcode>, and \u003Ccode class=\"key\">conversations\u002F\u003C\u002Fcode> so the logs don’t stay behind.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Erase everything\u003C\u002Ftd>\n\u003Ctd>Delete the \u003Ccode class=\"key\">~\u002F.escouade\u002F\u003C\u002Fcode> folder. The sign-ins of the accounts added under \u003Ccode class=\"key\">claude\u002F\u003C\u002Fcode> go with it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Remove the integration tokens\u003C\u002Ftd>\n\u003Ctd>Disconnect each service in Settings › Integrations.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>Your projects’ files, the agents’ worktrees, and Claude Code’s sessions are never touched by a reset: remove the worktrees you no longer want with git.\u003C\u002Fp>\n\u003Ch2 id=\"an-unreadable-file\">An unreadable file\u003C\u002Fh2>\n\u003Cp>When \u003Ccode class=\"key\">settings.json\u003C\u002Fcode>, \u003Ccode class=\"key\">state.json\u003C\u002Fcode>, \u003Ccode class=\"key\">integrations.json\u003C\u002Fcode>, or \u003Ccode class=\"key\">sync-queue.json\u003C\u002Fcode> isn’t valid JSON, Escouade writes the error to \u003Ccode class=\"key\">app.log\u003C\u002Fcode>, keeps a copy of the file under a name like \u003Ccode class=\"key\">state.broken.json\u003C\u002Fcode>, and starts with the defaults for that file. The copy lets you recover by hand what was in it, such as the list of projects. See \u003Ca href=\"\u002Fen\u002Fdocs\u002Ftroubleshooting\u002F\">troubleshooting\u003C\u002Fa>.\u003C\u002Fp>\n",[8,12,15,18,21,24,27,30,33,36],{"id":9,"text":10,"depth":11},"the-data-folder","The data folder",2,{"id":13,"text":14,"depth":11},"the-old-claude-code-manager-folder","The old Claude Code Manager folder",{"id":16,"text":17,"depth":11},"choosing-another-folder","Choosing another folder",{"id":19,"text":20,"depth":11},"tokens","Tokens",{"id":22,"text":23,"depth":11},"what-escouade-reads-of-claude-code","What Escouade reads of Claude Code",{"id":25,"text":26,"depth":11},"anonymous-usage-statistics","Anonymous usage statistics",{"id":28,"text":29,"depth":11},"what-isn-t-in-the-folder","What isn’t in the folder",{"id":31,"text":32,"depth":11},"backing-up","Backing up",{"id":34,"text":35,"depth":11},"resetting","Resetting",{"id":37,"text":38,"depth":11},"an-unreadable-file","An unreadable file",1791926756719]