{"id":3695,"date":"2026-11-13T15:00:00","date_gmt":"2026-11-13T07:00:00","guid":{"rendered":"https:\/\/www.olares.com\/articles\/?p=3695"},"modified":"2026-11-10T13:10:47","modified_gmt":"2026-11-10T05:10:47","slug":"prepare-project-workspace-ai-coding-agent","status":"publish","type":"post","link":"https:\/\/www.olares.com\/articles\/prepare-project-workspace-ai-coding-agent\/","title":{"rendered":"Prepare a Project Workspace Before an AI Coding Agent Makes Changes"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Before an AI coding agent touches your code, make three things clear. First, record what has already changed. Second, scope the task to specific behavior and paths. Third, name the check that will show the work is done.<\/p>\n<p class=\"wp-block-paragraph\">Use a topic branch to organize the agent\u2019s commits. If your current checkout has unfinished work, give the agent a separate linked worktree as well. A branch alone does not separate uncommitted files in the same folder. Neither choice limits the agent\u2019s permissions, so check the runner\u2019s access controls before it starts.<\/p>\n<h2 class=\"wp-block-heading\">Set a known starting point and define success<\/h2>\n<p class=\"wp-block-paragraph\">A good AI coding workspace starts with a baseline you can compare against. Without one, you can&#8217;t tell which edits came from the agent and which were already there. Work through these steps in order:<\/p>\n<ol class=\"wp-block-list\">\n<li><strong>Inspect the current state.<\/strong> Run git status. <a href=\"https:\/\/git-scm.com\/docs\/git-status\" rel=\"noopener\" target=\"_blank\">What Git status reports<\/a> covers three groups: staged changes (index vs. current commit), unstaged changes (working tree vs. index), and untracked files that are not ignored. If ignored files such as local config, generated output, or environment files could affect the task, add the &#8211;ignored option so they appear too.<\/li>\n<li><strong>Preserve unrelated work.<\/strong> Decide what each pending change is. If it has nothing to do with the task, leave it in your original working tree. If the agent needs source changes, review and commit only those intended changes before creating its worktree. Do not commit secrets, environment files, or generated output merely to transfer a working environment.<\/li>\n<li><strong>Define the task boundary.<\/strong> Write down the expected behavior, the files or directories that matter, and the non-goals. For example: &#8220;Fix date parsing in src\/parser\/; do not change the public API or touch build config.&#8221;<\/li>\n<li><strong>Choose a completion check.<\/strong> Name an existing focused test or project check that exercises this behavior, plus a result you can observe, such as a failing case that should now pass. A reply from the agent is not proof. The task counts as done only after you run the check and review the result.<\/li>\n<\/ol>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1382\" height=\"921\" alt=\"Four-step checklist for inspecting repository state, preserving unrelated work, defining task scope, and verifying completion.\" class=\"wp-image-3694\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"https:\/\/www.olares.com\/articles\/wp-content\/uploads\/2026\/11\/prepare-project-workspace-ai-coding-agent-image-2.png\"\/><figcaption class=\"wp-element-caption\">Four-step checklist for inspecting repository state, preserving unrelated work, defining task scope, and verifying completion.<\/figcaption><\/figure>\n<h2 class=\"wp-block-heading\">Separate the review diff with a branch or worktree<\/h2>\n<p class=\"wp-block-paragraph\">A topic branch keeps the agent&#8217;s commits apart from your main line of work. A linked worktree goes one step further by giving the agent its own folder on disk. According to Git&#8217;s docs on <a href=\"https:\/\/git-scm.com\/docs\/git-worktree\" rel=\"noopener\" target=\"_blank\">how Git worktrees are linked<\/a>, one repository can have several working trees. A linked worktree checks out a chosen commit and shares all repository data except per-worktree files such as HEAD and the index.<\/p>\n<p class=\"wp-block-paragraph\">This matters when your main folder has edits in progress. Suppose you have a half-finished feature open while asking the agent to fix one focused bug. Leave your feature edits in place. Create a linked worktree at the intended commit, for example with git worktree add &lt;path&gt; &lt;branch&gt;, and point the agent there. Uncommitted edits from your original folder are not carried into the new checkout, so the agent&#8217;s diff contains only its own work. Give it the same brief from the previous section, and the change stays easy to trace.<\/p>\n<p class=\"wp-block-paragraph\">Keep the limit in view, though. A worktree is a separate folder that shares the same repository. It is not access control.<\/p>\n<h2 class=\"wp-block-heading\">Choose execution isolation from the agent&#8217;s actual access<\/h2>\n<p class=\"wp-block-paragraph\">Git layout decides where edits land. The agent runner decides what the agent can execute, read, write, and reach on the network. These are separate decisions. If the agent only suggests edits for you to apply, a branch or worktree may be enough. If it can run shell commands or read files outside the task, check the runner&#8217;s real controls for four areas: filesystem paths, network access, credentials, and tools or subprocesses.<\/p>\n<p class=\"wp-block-paragraph\">GitHub Copilot shows why this check matters. GitHub&#8217;s documentation on <a href=\"https:\/\/docs.github.com\/en\/copilot\/concepts\/security-governance-and-network-settings\/about-cloud-and-local-sandboxes\" rel=\"noopener\" target=\"_blank\">Copilot local sandbox defaults<\/a> says local sandboxing is off by default. Until you turn it on, the shell commands Copilot runs have the same access as your user account. Turning it on limits access to a policy you control. GitHub describes this as lighter-weight OS-level containment, not a separate virtual machine or container.<\/p>\n<p class=\"wp-block-paragraph\">Even when it is enabled, enforcement is not the same for every tool. The <a href=\"https:\/\/docs.github.com\/en\/copilot\/concepts\/security-governance-and-network-settings\/understanding-local-sandboxing\" rel=\"noopener\" target=\"_blank\">Copilot CLI filesystem policy limits<\/a> explain that shell commands run as sandboxed child processes, so the operating system enforces the policy. Built-in file-reading and file-editing tools check the policy in software, with no operating-system backstop. If you start a session in a repository subdirectory, Copilot also grants read access to the whole repository. That means a secret stored elsewhere in the project may still be readable. Add deny rules for sensitive paths where the runner supports them.<\/p>\n<p class=\"wp-block-paragraph\">The takeaway applies to other agents too. Don&#8217;t assume a &#8220;sandbox&#8221; label or a worktree covers every tool or path. Before you allow command execution, confirm which paths are denied, whether network access is on, and how credentials are exposed. If the runner can&#8217;t enforce the boundary you need, move secrets out of the repository or use a more isolated environment first.<\/p>\n<h2 class=\"wp-block-heading\">FAQs<\/h2>\n<h3 class=\"wp-block-heading\">Does git status show ignored files?<\/h3>\n<p class=\"wp-block-paragraph\">Not by default. The standard output lists staged, unstaged, and untracked files, but untracked files that match ignore rules are left out. According to the git status documentation, you can add &#8211;ignored to include them. This helps when a local config or cache file might change how the code behaves.<\/p>\n<h3 class=\"wp-block-heading\">Will a new Git worktree include my uncommitted changes?<\/h3>\n<p class=\"wp-block-paragraph\">You should assume it won&#8217;t. A linked worktree checks out a commit, and per-worktree state such as the index stays separate, as the git worktree reference describes. If the agent needs work you haven&#8217;t committed, review and commit the intended source changes first, then create the worktree from that point. Provision required secrets separately through the runner\u2019s supported mechanism.<\/p>\n<h3 class=\"wp-block-heading\">Can a Copilot cloud sandbox access my local files?<\/h3>\n<p class=\"wp-block-paragraph\">According to GitHub, the commands it runs can&#8217;t read or change files on your computer. GitHub&#8217;s page on <a href=\"https:\/\/docs.github.com\/en\/copilot\/concepts\/security-governance-and-network-settings\/about-cloud-sandboxes\" rel=\"noopener\" target=\"_blank\">what a Copilot cloud sandbox can access<\/a> also says the repository is cloned into the sandbox, and network access follows the applicable firewall settings. Your local machine is protected, but your repository contents are copied to GitHub&#8217;s environment. Decide whether that is acceptable for the code involved.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Before an AI coding agent touches your code, make three things clear. First, record what has already changed. Second, scope the task to specific behavior and paths. Third, name the check that will show the work is done. Use a topic branch to organize the agent\u2019s commits. If your current checkout has unfinished work, give [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":3693,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3695","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Prepare a Workspace Before an AI Coding Agent Edits<\/title>\n<meta name=\"description\" content=\"Record the starting state, scope the task to specific behavior, isolate the review diff, and match execution isolation to the access the agent really has.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Prepare a Workspace Before an AI Coding Agent Edits\" \/>\n<meta property=\"og:description\" content=\"Record the starting state, scope the task to specific behavior, isolate the review diff, and match execution isolation to the access the agent really has.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/\" \/>\n<meta property=\"og:site_name\" content=\"Olares Articles\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/people\/Olares\/61579156063357\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-13T07:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/43.166.210.66:8080\/wp-content\/uploads\/2026\/11\/prepare-project-workspace-ai-coding-agent-featured.png\" \/>\n\t<meta property=\"og:image:width\" content=\"691\" \/>\n\t<meta property=\"og:image:height\" content=\"460\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Yajing Wang\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Olares_OS\" \/>\n<meta name=\"twitter:site\" content=\"@Olares_OS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yajing Wang\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/\"},\"author\":{\"name\":\"Yajing Wang\",\"@id\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/#\\\/schema\\\/person\\\/d106d6ed3db3314a7a18162f8b4c27ae\"},\"headline\":\"Prepare a Project Workspace Before an AI Coding Agent Makes Changes\",\"datePublished\":\"2026-11-13T07:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/\"},\"wordCount\":1071,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/#organization\"},\"image\":{\"@id\":\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/prepare-project-workspace-ai-coding-agent-featured.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/\",\"url\":\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/\",\"name\":\"Prepare a Workspace Before an AI Coding Agent Edits\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/prepare-project-workspace-ai-coding-agent-featured.png\",\"datePublished\":\"2026-11-13T07:00:00+00:00\",\"description\":\"Record the starting state, scope the task to specific behavior, isolate the review diff, and match execution isolation to the access the agent really has.\",\"breadcrumb\":{\"@id\":\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/prepare-project-workspace-ai-coding-agent-featured.png\",\"contentUrl\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/prepare-project-workspace-ai-coding-agent-featured.png\",\"width\":691,\"height\":460,\"caption\":\"Developer compares current code changes with a task brief at a desk.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/43.166.210.66:8080\\\/prepare-project-workspace-ai-coding-agent\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Prepare a Project Workspace Before an AI Coding Agent Makes Changes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/#website\",\"url\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/\",\"name\":\"Olares Articles\",\"description\":\"Perspectives on private AI, self-hosting, and a digital life you control.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/#organization\",\"name\":\"Olares\",\"url\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/mascot_black.png\",\"contentUrl\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/mascot_black.png\",\"width\":1000,\"height\":1000,\"caption\":\"Olares\"},\"image\":{\"@id\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/people\\\/Olares\\\/61579156063357\\\/\",\"https:\\\/\\\/x.com\\\/Olares_OS\",\"https:\\\/\\\/github.com\\\/beclab\\\/Olares\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/olarestech\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@OlaresOS\\\/featured\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/#\\\/schema\\\/person\\\/d106d6ed3db3314a7a18162f8b4c27ae\",\"name\":\"Yajing Wang\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e14488812ffef7f238774b577689ca193019f2bbb1c1745cde735ab71d3c4cbc?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e14488812ffef7f238774b577689ca193019f2bbb1c1745cde735ab71d3c4cbc?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e14488812ffef7f238774b577689ca193019f2bbb1c1745cde735ab71d3c4cbc?s=96&d=mm&r=g\",\"caption\":\"Yajing Wang\"},\"description\":\"Yajing Wang is Head of Growth at Olares. Yajing's work focuses on helping people understand personal cloud software, local AI, and self-hosted applications, with an emphasis on clear explanations of how these tools fit into everyday workflows.\",\"url\":\"https:\\\/\\\/www.olares.com\\\/articles\\\/author\\\/yajing-wang\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Prepare a Workspace Before an AI Coding Agent Edits","description":"Record the starting state, scope the task to specific behavior, isolate the review diff, and match execution isolation to the access the agent really has.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/","og_locale":"en_US","og_type":"article","og_title":"Prepare a Workspace Before an AI Coding Agent Edits","og_description":"Record the starting state, scope the task to specific behavior, isolate the review diff, and match execution isolation to the access the agent really has.","og_url":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/","og_site_name":"Olares Articles","article_publisher":"https:\/\/www.facebook.com\/people\/Olares\/61579156063357\/","article_published_time":"2026-11-13T07:00:00+00:00","og_image":[{"width":691,"height":460,"url":"http:\/\/43.166.210.66:8080\/wp-content\/uploads\/2026\/11\/prepare-project-workspace-ai-coding-agent-featured.png","type":"image\/png"}],"author":"Yajing Wang","twitter_card":"summary_large_image","twitter_creator":"@Olares_OS","twitter_site":"@Olares_OS","twitter_misc":{"Written by":"Yajing Wang","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/#article","isPartOf":{"@id":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/"},"author":{"name":"Yajing Wang","@id":"https:\/\/www.olares.com\/articles\/#\/schema\/person\/d106d6ed3db3314a7a18162f8b4c27ae"},"headline":"Prepare a Project Workspace Before an AI Coding Agent Makes Changes","datePublished":"2026-11-13T07:00:00+00:00","mainEntityOfPage":{"@id":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/"},"wordCount":1071,"commentCount":0,"publisher":{"@id":"https:\/\/www.olares.com\/articles\/#organization"},"image":{"@id":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/#primaryimage"},"thumbnailUrl":"https:\/\/www.olares.com\/articles\/wp-content\/uploads\/2026\/11\/prepare-project-workspace-ai-coding-agent-featured.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/","url":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/","name":"Prepare a Workspace Before an AI Coding Agent Edits","isPartOf":{"@id":"https:\/\/www.olares.com\/articles\/#website"},"primaryImageOfPage":{"@id":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/#primaryimage"},"image":{"@id":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/#primaryimage"},"thumbnailUrl":"https:\/\/www.olares.com\/articles\/wp-content\/uploads\/2026\/11\/prepare-project-workspace-ai-coding-agent-featured.png","datePublished":"2026-11-13T07:00:00+00:00","description":"Record the starting state, scope the task to specific behavior, isolate the review diff, and match execution isolation to the access the agent really has.","breadcrumb":{"@id":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/#primaryimage","url":"https:\/\/www.olares.com\/articles\/wp-content\/uploads\/2026\/11\/prepare-project-workspace-ai-coding-agent-featured.png","contentUrl":"https:\/\/www.olares.com\/articles\/wp-content\/uploads\/2026\/11\/prepare-project-workspace-ai-coding-agent-featured.png","width":691,"height":460,"caption":"Developer compares current code changes with a task brief at a desk."},{"@type":"BreadcrumbList","@id":"http:\/\/43.166.210.66:8080\/prepare-project-workspace-ai-coding-agent\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.olares.com\/articles\/"},{"@type":"ListItem","position":2,"name":"Prepare a Project Workspace Before an AI Coding Agent Makes Changes"}]},{"@type":"WebSite","@id":"https:\/\/www.olares.com\/articles\/#website","url":"https:\/\/www.olares.com\/articles\/","name":"Olares Articles","description":"Perspectives on private AI, self-hosting, and a digital life you control.","publisher":{"@id":"https:\/\/www.olares.com\/articles\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.olares.com\/articles\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.olares.com\/articles\/#organization","name":"Olares","url":"https:\/\/www.olares.com\/articles\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.olares.com\/articles\/#\/schema\/logo\/image\/","url":"https:\/\/www.olares.com\/articles\/wp-content\/uploads\/2026\/09\/mascot_black.png","contentUrl":"https:\/\/www.olares.com\/articles\/wp-content\/uploads\/2026\/09\/mascot_black.png","width":1000,"height":1000,"caption":"Olares"},"image":{"@id":"https:\/\/www.olares.com\/articles\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/people\/Olares\/61579156063357\/","https:\/\/x.com\/Olares_OS","https:\/\/github.com\/beclab\/Olares","https:\/\/www.linkedin.com\/company\/olarestech\/","https:\/\/www.youtube.com\/@OlaresOS\/featured"]},{"@type":"Person","@id":"https:\/\/www.olares.com\/articles\/#\/schema\/person\/d106d6ed3db3314a7a18162f8b4c27ae","name":"Yajing Wang","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e14488812ffef7f238774b577689ca193019f2bbb1c1745cde735ab71d3c4cbc?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e14488812ffef7f238774b577689ca193019f2bbb1c1745cde735ab71d3c4cbc?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e14488812ffef7f238774b577689ca193019f2bbb1c1745cde735ab71d3c4cbc?s=96&d=mm&r=g","caption":"Yajing Wang"},"description":"Yajing Wang is Head of Growth at Olares. Yajing's work focuses on helping people understand personal cloud software, local AI, and self-hosted applications, with an emphasis on clear explanations of how these tools fit into everyday workflows.","url":"https:\/\/www.olares.com\/articles\/author\/yajing-wang\/"}]}},"_links":{"self":[{"href":"https:\/\/www.olares.com\/articles\/wp-json\/wp\/v2\/posts\/3695","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.olares.com\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.olares.com\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.olares.com\/articles\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.olares.com\/articles\/wp-json\/wp\/v2\/comments?post=3695"}],"version-history":[{"count":2,"href":"https:\/\/www.olares.com\/articles\/wp-json\/wp\/v2\/posts\/3695\/revisions"}],"predecessor-version":[{"id":3759,"href":"https:\/\/www.olares.com\/articles\/wp-json\/wp\/v2\/posts\/3695\/revisions\/3759"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.olares.com\/articles\/wp-json\/wp\/v2\/media\/3693"}],"wp:attachment":[{"href":"https:\/\/www.olares.com\/articles\/wp-json\/wp\/v2\/media?parent=3695"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.olares.com\/articles\/wp-json\/wp\/v2\/categories?post=3695"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.olares.com\/articles\/wp-json\/wp\/v2\/tags?post=3695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}