Browse, search, and edit your project’s context files from the admin panel
Open File Explorer from Settings → File Explorer.
Available to Admin and Context Admin roles only. Editing also requires a connected context repository, either connected from the UI or supplied by a self-hosted deployment through NAO_CONTEXT_SOURCE=git. Until then, every file is read-only.
New to editing context files? The Contributor Guide covers what belongs where, which files are safe to edit, and how the agent finds what you write.
The live context and File Explorer serve different purposes:
Live context is the version of the files currently used by the agent.
File Explorer uses a separate, editable Git worktree for each user.
Saving in File Explorer changes only your worktree. It does not immediately change what the agent sees. Your branch, commits, and uncommitted changes belong to your worktree and are never overwritten by a live context pull.Similarly, clicking Pull latest in Settings → Git updates the live context first. When it is safe, nao updates File Explorer worktrees automatically.
Search covers file contents as well as names, and multi-word searches match in any order. Results truncate after 5 seconds of loading or 200 files searched. When you open a result that matched on content, nao jumps to the match and highlights it.Turn off file-content search if your context repository is large.The content of files over 1 MB, non-UTF-8 files, .git, .env, and .naoignore is not searched. .git and .env are not browsable or writable.Markdown files open as rendered pages. Click Source to put the raw text beside the page and edit with a live preview. nao remembers whether you keep it open. Each file also shows an estimated token count, so you can see what a context file costs the agent before deciding to split it.When you open the project-root RULES.md, Preview as lets you select one or more User Groups. The preview always includes All Users and renders conditional blocks for the selected memberships. This selector appears only for the root RULES.md, because other files do not support conditional group blocks.
Saving (Cmd+S) writes to your private worktree, not to the live context files used by the agent. Your team does not see your changes until your pull or merge request is merged and the live context is updated.
When the live context moves ahead of your worktree and nao cannot update it automatically, an update icon appears in the Git panel. Click it to Update File Explorer.Updating switches File Explorer to the repository’s default branch and loads the latest live context. Existing feature branches and commits remain unchanged.
If File Explorer has uncommitted changes, nao will not update the worktree. Commit or discard those changes first, then click the update icon again.
You can also open a diff by clicking a changed file in the pull history under Settings → Git. Depending on the state of your worktree, nao might ask you to update File Explorer first.
Commits are authored as you, with nao as co-author. Committing from the default branch creates another branch so that pushing creates a pull or merge request for review.The first push from a branch opens a review request. Later pushes update that same request rather than opening another.After the request is merged, update the live context through a redeploy, a scheduled sync, or Pull latest in Settings → Git.
”Add NAO_CONTEXT_GIT_TOKEN or NAO_CONTEXT_GIT_SSH_KEY to edit and propose context changes.”
Set the appropriate credential on a deployment-managed repository - see Git-managed context
”Repository status is temporarily unavailable.”
Retry; this is usually transient
”No tracked nao_config.yaml was found in the connected repository.”
Commit a nao_config.yaml to the repository
”Multiple nao projects were found in the connected repository.”
Keep one nao_config.yaml per context repository
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"nao Labs","colors":{"primary":"#522BFF","light":"#FAFAFD","dark":"#1D1F24"},"logo":{"light":"https://mintcdn.com/naolabs/GfySj0mWgsca4SVG/logo/light.svg?fit=max\u0026auto=format\u0026n=GfySj0mWgsca4SVG\u0026q=85\u0026s=b70099fe6c9ac8679aeb115e3819d55c","dark":"https://mintcdn.com/naolabs/GfySj0mWgsca4SVG/logo/dark.svg?fit=max\u0026auto=format\u0026n=GfySj0mWgsca4SVG\u0026q=85\u0026s=af44c01c99c28a86b3862898cd71efd5"},"favicon":"https://mintcdn.com/naolabs/m5BzQr8fEtipgbHO/favicon.svg?fit=max\u0026auto=format\u0026n=m5BzQr8fEtipgbHO\u0026q=85\u0026s=e6a1d84767c52f778ba3f8ac93c2adf2","background":{"color":{"light":"#FAFAFD","dark":"#1D1F24"}},"navbar":{"links":[{"href":"https://getnao.io/blog","label":"Blog"},{"href":"mailto:claire@getnao.io","label":"Support"}]},"footer":{"socials":{"slack":"https://join.slack.com/t/naolabs/shared_invite/zt-4080jlm79-nm52x5nZhG2N1ben8zwpiQ"}},"errors":{"404":{"redirect":false,"title":"404: Data Not Found","description":"This page returned **NULL**. Looks like this query didn't find what you were looking for! Try checking the [navigation](/nao-ide/get-started/welcome) or use our [search](/nao-ide/get-started/welcome) to find what you need."}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/getnao/nao"},{"anchor":"Slack","icon":"slack","href":"https://join.slack.com/t/naolabs/shared_invite/zt-4080jlm79-nm52x5nZhG2N1ben8zwpiQ"},{"anchor":"Blog","icon":"book","href":"https://getnao.io/blog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"naolabs","hasAudioNarration":false,"actualSubdomain":"naolabs","customDomains":["docs.getnao.io"],"gitSource":{"type":"github","owner":"getnao","repo":"nao-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af5b807bb452cd0b1db289d","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"nao Open Source Agent","count":58},{"language":"default","tag":"nao IDE","count":32},{"language":"default","tag":"Chat Interface","count":18},{"language":"default","tag":"Get Started","count":11},{"language":"default","tag":"Context Builder","count":10},{"language":"default","tag":"Capabilities","count":8},{"language":"default","tag":"Admin","count":7},{"language":"default","tag":"Connectors","count":7},{"language":"default","tag":"Context Providers","count":7},{"language":"default","tag":"nao AI","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":"@font-face{font-family:'Borna';src:url('/fonts/Borna/Borna-Regular.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Borna';src:url('/fonts/Borna/Borna-Medium.otf') format('opentype');font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:'Borna';src:url('/fonts/Borna/Borna-SemiBold.otf') format('opentype');font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:'Borna';src:url('/fonts/Borna/Borna-Bold.otf') format('opentype');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'Geist';src:url('/fonts/Geist/webfonts/Geist-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Geist';src:url('/fonts/Geist/webfonts/Geist-Medium.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:'Geist';src:url('/fonts/Geist/webfonts/Geist-SemiBold.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:'Geist';src:url('/fonts/Geist/webfonts/Geist-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}:root{--font-heading: 'Borna', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;--font-body: 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif}h1,h2,h3,h4,h5,h6,.mdx-heading,[class*=\"heading\"],.title{font-family:var(--font-heading)}body,p,span,div,.mdx-content,[class*=\"content\"]{font-family:var(--font-body)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading)!important}.sidebar-title{font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif!important}code,pre,pre code,code *,pre *,pre code *,[class*=\"code\"],[class*=\"Code\"],[class*=\"code\"] *,[class*=\"Code\"] *,.shiki,.shiki *,.shiki code,.shiki pre,.shiki code *,.shiki pre *,.token,.hljs,.hljs *,.highlight,.highlight *,.highlight code,.highlight pre,div[class*=\"code\"],div[class*=\"Code\"],div pre,div code{font-family:'SF Mono', 'Monaco', 'Inconsolata', 'Fira Code', 'Droid Sans Mono', 'Source Code Pro', 'Courier New', Courier, monospace!important}h1,h2,h3,h4,h5,h6{font-weight:500!important}.eyebrow,[class*=\"eyebrow\"],.eyebrow.text-primary,.eyebrow.dark\\:text-primary-light{color:#000000!important;font-weight:normal!important}img{border-radius:10px!important}img[src*=\"/logo/\"],img[alt*=\"nao logo\"],img[alt*=\"Nao logo\"],img[alt=\"nao\"]{border-radius:0!important}[class*=\"card\"],[class*=\"Card\"],.card,.Card{background-color:#FAFAFD!important;border:none!important;box-shadow:none!important}.dark [class*=\"card\"],.dark [class*=\"Card\"],.dark .card,.dark .Card{background-color:#1D1F24!important;border:none!important;box-shadow:none!important}"}],"page":{"pagePath":"nao-agent/chat/admin/file-explorer","slug":"/nao-agent/chat/admin/file-explorer","pageMetadata":{"title":"File Explorer","description":"Browse, search, and edit your project's context files from the admin panel","href":"/nao-agent/chat/admin/file-explorer"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Browse, search, and edit your project’s context files from the admin panel\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Frame,Heading,Info,OptimizedImage,Table,Tip,Warning}=_components;if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Open File Explorer from `,_jsx(_components.strong,{children:`Settings`}),` → `,_jsx(_components.strong,{children:`File Explorer`}),`.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`Available to `,_jsx(_components.strong,{children:`Admin`}),` and `,_jsx(_components.strong,{children:`Context Admin`}),` roles only. Editing also requires a `,_jsx(_components.a,{href:`/nao-agent/chat/admin/git`,children:`connected context repository`}),`, either connected from the UI or supplied by a self-hosted deployment through `,_jsx(_components.code,{children:`NAO_CONTEXT_SOURCE=git`}),`. Until then, every file is read-only.`]})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`New to editing context files? The `,_jsx(_components.a,{href:`/nao-agent/context-engineering/contributing`,children:`Contributor Guide`}),` covers what belongs where, which files are safe to edit, and how the agent finds what you write.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`live-context-and-your-file-explorer-worktree`,children:`Live context and your File Explorer worktree`}),`\n`,_jsx(_components.p,{children:`The live context and File Explorer serve different purposes:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Live context`}),` is the version of the files currently used by the agent.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`File Explorer`}),` uses a separate, editable Git worktree for each user.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Saving in File Explorer changes only your worktree. It does not immediately change what the agent sees. Your branch, commits, and uncommitted changes belong to your worktree and are never overwritten by a live context pull.`}),`\n`,_jsxs(_components.p,{children:[`Similarly, clicking `,_jsx(_components.strong,{children:`Pull latest`}),` in `,_jsx(_components.strong,{children:`Settings`}),` → `,_jsx(_components.strong,{children:`Git`}),` updates the live context first. When it is safe, nao updates File Explorer worktrees automatically.`]}),`\n`,_jsx(Heading,{level:`2`,id:`browse`,children:`Browse`}),`\n`,_jsx(_components.p,{children:`Search covers file contents as well as names, and multi-word searches match in any order. Results truncate after 5 seconds of loading or 200 files searched. When you open a result that matched on content, nao jumps to the match and highlights it.`}),`\n`,_jsx(_components.p,{children:`Turn off file-content search if your context repository is large.`}),`\n`,_jsxs(_components.p,{children:[`The content of files over 1 MB, non-UTF-8 files, `,_jsx(_components.code,{children:`.git`}),`, `,_jsx(_components.code,{children:`.env`}),`, and `,_jsx(_components.code,{children:`.naoignore`}),` is not searched. `,_jsx(_components.code,{children:`.git`}),` and `,_jsx(_components.code,{children:`.env`}),` are not browsable or writable.`]}),`\n`,_jsxs(_components.p,{children:[`Markdown files open as rendered pages. Click `,_jsx(_components.strong,{children:`Source`}),` to put the raw text beside the page and edit with a live preview. nao remembers whether you keep it open. Each file also shows an estimated token count, so you can see what a context file costs the agent before deciding to split it.`]}),`\n`,_jsxs(_components.p,{children:[`When you open the project-root `,_jsx(_components.code,{children:`RULES.md`}),`, `,_jsx(_components.strong,{children:`Preview as`}),` lets you select one or more `,_jsx(_components.a,{href:`/nao-agent/chat/admin/user-groups#add-conditional-rules-by-group`,children:`User Groups`}),`. The preview always includes `,_jsx(_components.strong,{children:`All Users`}),` and renders conditional blocks for the selected memberships. This selector appears only for the root `,_jsx(_components.code,{children:`RULES.md`}),`, because other files do not support conditional group blocks.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/naolabs/_Hysu59WJgprArv6/images/nao-agent/file-explorer-preview-as.png?fit=max\u0026auto=format\u0026n=_Hysu59WJgprArv6\u0026q=85\u0026s=2e6b24f068afa860393bbd3c8c97a895`,alt:`File Explorer previewing conditional RULES.md content for selected User Groups`,\"data-og-width\":`2700`,width:`2700`,\"data-og-height\":`2104`,height:`2104`,\"data-path\":`images/nao-agent/file-explorer-preview-as.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/naolabs/_Hysu59WJgprArv6/images/nao-agent/file-explorer-preview-as.png?w=280\u0026fit=max\u0026auto=format\u0026n=_Hysu59WJgprArv6\u0026q=85\u0026s=8b5f6a6fa084e113d4da5ce66af3df15 280w, https://mintcdn.com/naolabs/_Hysu59WJgprArv6/images/nao-agent/file-explorer-preview-as.png?w=560\u0026fit=max\u0026auto=format\u0026n=_Hysu59WJgprArv6\u0026q=85\u0026s=ff6ac5c3af4d21d489ee51a91f6da8c8 560w, https://mintcdn.com/naolabs/_Hysu59WJgprArv6/images/nao-agent/file-explorer-preview-as.png?w=840\u0026fit=max\u0026auto=format\u0026n=_Hysu59WJgprArv6\u0026q=85\u0026s=7fb6ced6a92b9f01aa8aa53df2177fc9 840w, https://mintcdn.com/naolabs/_Hysu59WJgprArv6/images/nao-agent/file-explorer-preview-as.png?w=1100\u0026fit=max\u0026auto=format\u0026n=_Hysu59WJgprArv6\u0026q=85\u0026s=c79b69211b6fd000fa2ea663ac7bb8d4 1100w, https://mintcdn.com/naolabs/_Hysu59WJgprArv6/images/nao-agent/file-explorer-preview-as.png?w=1650\u0026fit=max\u0026auto=format\u0026n=_Hysu59WJgprArv6\u0026q=85\u0026s=9e414ca687ef6ad07adfe5a1708c0ab6 1650w, https://mintcdn.com/naolabs/_Hysu59WJgprArv6/images/nao-agent/file-explorer-preview-as.png?w=2500\u0026fit=max\u0026auto=format\u0026n=_Hysu59WJgprArv6\u0026q=85\u0026s=42d1d73b1a8812bcd541d5f278403c97 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`edit`,children:`Edit`}),`\n`,_jsxs(_components.p,{children:[`Saving (`,_jsx(_components.code,{children:`Cmd+S`}),`) writes to your private worktree, not to the live context files used by the agent. Your team does not see your changes until your pull or merge request is merged and the live context is updated.`]}),`\n`,_jsx(Heading,{level:`2`,id:`keep-file-explorer-up-to-date`,children:`Keep File Explorer up to date`}),`\n`,_jsxs(_components.p,{children:[`When the live context moves ahead of your worktree and nao cannot update it automatically, an update icon appears in the `,_jsx(_components.strong,{children:`Git`}),` panel. Click it to `,_jsx(_components.strong,{children:`Update File Explorer`}),`.`]}),`\n`,_jsx(_components.p,{children:`Updating switches File Explorer to the repository’s default branch and loads the latest live context. Existing feature branches and commits remain unchanged.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`If File Explorer has uncommitted changes, nao will not update the worktree. Commit or discard those changes first, then click the update icon again.`})}),`\n`,_jsxs(_components.p,{children:[`You can also open a diff by clicking a changed file in the pull history under `,_jsx(_components.strong,{children:`Settings`}),` → `,_jsx(_components.strong,{children:`Git`}),`. Depending on the state of your worktree, nao might ask you to update File Explorer first.`]}),`\n`,_jsx(Heading,{level:`2`,id:`commit-and-open-a-pull-request`,children:`Commit and open a pull request`}),`\n`,_jsxs(_components.p,{children:[`Saved edits collect in the `,_jsx(_components.strong,{children:`Git`}),` panel under the file tree, where you can review the changes and choose which files to commit.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Discarding changes permanently removes uncommitted edits.`})}),`\n`,_jsx(_components.p,{children:`Commits are authored as you, with nao as co-author. Committing from the default branch creates another branch so that pushing creates a pull or merge request for review.`}),`\n`,_jsx(_components.p,{children:`The first push from a branch opens a review request. Later pushes update that same request rather than opening another.`}),`\n`,_jsxs(_components.p,{children:[`After the request is merged, update the live context through a redeploy, a scheduled sync, or `,_jsx(_components.strong,{children:`Pull latest`}),` in `,_jsx(_components.strong,{children:`Settings`}),` → `,_jsx(_components.strong,{children:`Git`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`why-a-file-is-read-only`,children:`Why a file is read-only`}),`\n`,_jsx(_components.p,{children:`When a file cannot be edited, nao explains why.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`What you see`}),_jsx(_components.th,{children:`What to do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”This file is generated by nao sync. Add human notes in annotations.md.” (or “Change its source instead.”)`}),_jsxs(_components.td,{children:[`Put your notes in `,_jsx(_components.code,{children:`annotations.md`}),`, or change the source it is generated from`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”This file is rendered from a Jinja template. Edit the template instead.”`}),_jsxs(_components.td,{children:[`Edit the `,_jsx(_components.code,{children:`.j2`}),` template it is rendered from`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”This path is replaced by nao sync. Change its source in nao_config.yaml.”`}),_jsxs(_components.td,{children:[`Change the source in `,_jsx(_components.code,{children:`nao_config.yaml`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”This file can’t be edited because it isn’t in the connected repository. Add it there to make it editable.”`}),_jsx(_components.td,{children:`Commit the file to the context repository`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”No context repository is connected. Open repository setup to connect one.”`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/nao-agent/chat/admin/git`,children:`Connect a repository`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Connect your GitHub account before using Git actions in the File explorer.”`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/nao-agent/chat/admin/git#connect-a-repository-from-the-ui`,children:`Connect your account`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”GitHub is not configured for this instance. Add the GitHub client credentials first.”`}),_jsxs(_components.td,{children:[`Ask whoever deploys nao to set the `,_jsx(_components.a,{href:`/nao-agent/chat/admin/git#connect-a-repository-from-the-ui`,children:`provider credentials`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Add NAO_CONTEXT_GIT_TOKEN or NAO_CONTEXT_GIT_SSH_KEY to edit and propose context changes.”`}),_jsxs(_components.td,{children:[`Set the appropriate credential on a deployment-managed repository - see `,_jsx(_components.a,{href:`/nao-agent/self-hosting/context-source#git-managed-context`,children:`Git-managed context`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Repository status is temporarily unavailable.”`}),_jsx(_components.td,{children:`Retry; this is usually transient`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”No tracked nao_config.yaml was found in the connected repository.”`}),_jsxs(_components.td,{children:[`Commit a `,_jsx(_components.code,{children:`nao_config.yaml`}),` to the repository`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Multiple nao projects were found in the connected repository.”`}),_jsxs(_components.td,{children:[`Keep one `,_jsx(_components.code,{children:`nao_config.yaml`}),` per context repository`]})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"File Explorer","description":"Browse, search, and edit your project's context files from the admin panel","href":"/nao-agent/chat/admin/file-explorer"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Live context and your File Explorer worktree","slug":"live-context-and-your-file-explorer-worktree","depth":2,"children":[]},{"title":"Browse","slug":"browse","depth":2,"children":[]},{"title":"Edit","slug":"edit","depth":2,"children":[]},{"title":"Keep File Explorer up to date","slug":"keep-file-explorer-up-to-date","depth":2,"children":[]},{"title":"Commit and open a pull request","slug":"commit-and-open-a-pull-request","depth":2,"children":[]},{"title":"Why a file is read-only","slug":"why-a-file-is-read-only","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"naolabs","siteName":"nao Labs","title":"File Explorer - nao Labs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-22T14:50:30.672Z","originalFileLocation":"nao-agent/chat/admin/file-explorer.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Browse, search, and edit your project\u0026#x27;s context files from the admin panel\">\u003cmeta data-mint-head name=\"application-name\" content=\"nao Labs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/naolabs/0gNtSQeCliXzNtsF/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/naolabs/0gNtSQeCliXzNtsF/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/naolabs/0gNtSQeCliXzNtsF/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/naolabs/0gNtSQeCliXzNtsF/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/naolabs/0gNtSQeCliXzNtsF/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/naolabs/0gNtSQeCliXzNtsF/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/naolabs/0gNtSQeCliXzNtsF/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/naolabs/0gNtSQeCliXzNtsF/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/naolabs/0gNtSQeCliXzNtsF/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"File Explorer - nao Labs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Browse, search, and edit your project\u0026#x27;s context files from the admin panel\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"nao Labs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.getnao.io/nao-agent/chat/admin/file-explorer\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://naolabs.mintlify.site/_mintlify/api/og/v2?division=Admin\u0026amp;title=File+Explorer\u0026amp;description=Browse%2C+search%2C+and+edit+your+project%27s+context+files+from+the+admin+panel\u0026amp;theme=89c6ad8f197ad8e02b68f376\u0026amp;signature=0af0c650c77a513c3ef5c3c0c745702e9c654f313ecc8c55cd4ba2ca14cde495\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"File Explorer - nao Labs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Browse, search, and edit your project\u0026#x27;s context files from the admin panel\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://naolabs.mintlify.site/_mintlify/api/og/v2?division=Admin\u0026amp;title=File+Explorer\u0026amp;description=Browse%2C+search%2C+and+edit+your+project%27s+context+files+from+the+admin+panel\u0026amp;theme=89c6ad8f197ad8e02b68f376\u0026amp;signature=0af0c650c77a513c3ef5c3c0c745702e9c654f313ecc8c55cd4ba2ca14cde495\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/naolabs/0gNtSQeCliXzNtsF/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"nao Labs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#522BFF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.getnao.io/nao-agent/chat/admin/file-explorer\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/nao-agent/chat/admin/file-explorer.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.getnao.io/#organization\",\"name\":\"nao Labs\",\"url\":\"https://docs.getnao.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/naolabs/GfySj0mWgsca4SVG/logo/light.svg?fit=max\u0026auto=format\u0026n=GfySj0mWgsca4SVG\u0026q=85\u0026s=b70099fe6c9ac8679aeb115e3819d55c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.getnao.io#website\",\"name\":\"nao Labs\",\"url\":\"https://docs.getnao.io\",\"publisher\":{\"@id\":\"https://docs.getnao.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.getnao.io/nao-agent/chat/admin/file-explorer#webpage\",\"url\":\"https://docs.getnao.io/nao-agent/chat/admin/file-explorer\",\"name\":\"File Explorer\",\"description\":\"Browse, search, and edit your project's context files from the admin panel\",\"dateModified\":\"2026-09-22T14:50:30.672Z\",\"isPartOf\":{\"@id\":\"https://docs.getnao.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.getnao.io/nao-agent/chat/admin/file-explorer#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.getnao.io/nao-agent/chat/admin/file-explorer#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Chat Interface\",\"item\":\"https://docs.getnao.io/nao-agent/chat/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Admin\",\"item\":\"https://docs.getnao.io/nao-agent/chat/admin/setup\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"File Explorer\",\"item\":\"https://docs.getnao.io/nao-agent/chat/admin/file-explorer\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.getnao.io/nao-agent/chat/admin/file-explorer#article\",\"headline\":\"File Explorer\",\"name\":\"File Explorer\",\"description\":\"Browse, search, and edit your project's context files from the admin panel\",\"url\":\"https://docs.getnao.io/nao-agent/chat/admin/file-explorer\",\"mainEntityOfPage\":{\"@id\":\"https://docs.getnao.io/nao-agent/chat/admin/file-explorer#webpage\"},\"dateModified\":\"2026-09-22T14:50:30.672Z\",\"publisher\":{\"@id\":\"https://docs.getnao.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.getnao.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"nao Labs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"nao Labs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/nao-agent/chat/admin/file-explorer.md","siteName":"nao Labs","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/getnao/nao"},{"anchor":"Slack","icon":"slack","href":"https://join.slack.com/t/naolabs/shared_invite/zt-4080jlm79-nm52x5nZhG2N1ben8zwpiQ"},{"anchor":"Blog","icon":"book","href":"https://getnao.io/blog"}]},"tabs":[{"tab":"nao Open Source Agent","groups":[{"group":"Get Started","pages":[{"title":"Welcome to nao","href":""},{"title":"Watch Demo 🎬","mode":"wide","href":"/nao-agent/demo"},{"title":"Quickstart","href":"/nao-agent/quickstart"}]},{"group":"Context Builder","pages":[{"title":"Overview","href":"/nao-agent/context-builder/overview"},{"group":"Setup","pages":[{"title":"Configuration","href":"/nao-agent/context-builder/configuration"},{"title":"Git Repository Setup","href":"/nao-agent/context-builder/git-repository"}]},{"group":"Context Providers","pages":[{"title":"Databases","href":"/nao-agent/context-builder/databases"},{"title":"Repositories","href":"/nao-agent/context-builder/repos"},{"title":"Semantic Layer (dbt MetricFlow)","href":"/nao-agent/context-builder/semantic-layer"},{"title":"Business tools","href":"/nao-agent/context-builder/business-tools"},{"title":"Rules","href":"/nao-agent/context-builder/rules-context"},{"title":"System Prompts","href":"/nao-agent/context-builder/system-prompts"},{"title":"Custom Context","href":"/nao-agent/context-builder/custom-context"}]}]},{"group":"Context Engineering","pages":[{"title":"Principles","href":"/nao-agent/context-engineering/principles"},{"title":"Playbook","href":"/nao-agent/context-engineering/playbook"},{"title":"Contributor Guide","href":"/nao-agent/context-engineering/contributing"},{"title":"Evaluation","href":"/nao-agent/context-engineering/evaluation"},{"title":"Recommendations","href":"/nao-agent/context-engineering/recommendations"},{"title":"Skills","href":"/nao-agent/context-engineering/skills"}]},{"group":"Chat Interface","pages":[{"title":"Overview","href":"/nao-agent/chat/overview"},{"group":"Capabilities","pages":[{"title":"Overview","href":"/nao-agent/chat/capabilities/overview"},{"title":"Visualizations","href":"/nao-agent/chat/capabilities/visualizations"},{"title":"Files and Storage","href":"/nao-agent/chat/capabilities/files-and-storage"},{"title":"Tools, MCPs, Skills","href":"/nao-agent/chat/capabilities/tools-mcps-skills"},{"title":"Memory","href":"/nao-agent/chat/capabilities/memory"},{"title":"Stories","href":"/nao-agent/chat/capabilities/stories"},{"title":"Custom stories","href":"/nao-agent/chat/capabilities/custom-stories"},{"title":"Automations","href":"/nao-agent/chat/capabilities/automations"}]},{"group":"BI","pages":[{"title":"Stories","href":"/nao-agent/chat/bi/stories"},{"title":"Migrate your BI to nao","href":"/nao-agent/chat/bi/migrate-bi"}]},{"group":"Admin","pages":[{"title":"Setup","href":"/nao-agent/chat/admin/setup"},{"title":"User Groups","href":"/nao-agent/chat/admin/user-groups"},{"title":"Git","description":"Connect, update, and review the repository that stores your context files","href":"/nao-agent/chat/admin/git"},{"title":"File Explorer","href":"/nao-agent/chat/admin/file-explorer"},{"title":"Monitoring","description":"Monitor usage, costs, feedbacks","href":"/nao-agent/chat/admin/monitoring"},{"title":"Budgets","href":"/nao-agent/chat/admin/budgets"},{"title":"Agent Settings","href":"/nao-agent/chat/admin/agent-settings"}]}]},{"group":"Connectors","pages":[{"title":"nao MCP","href":"/nao-agent/connectors/mcp"},{"group":"Bots","pages":[{"title":"Slack Bot","href":"/nao-agent/connectors/slack"},{"title":"Telegram Bot","href":"/nao-agent/connectors/telegram"},{"title":"WhatsApp Bot","href":"/nao-agent/connectors/whatsapp"},{"title":"Microsoft Teams Bot","href":"/nao-agent/connectors/microsoft_teams"},{"title":"Mattermost Bot","href":"/nao-agent/connectors/mattermost"},{"title":"Discord Bot","href":"/nao-agent/connectors/discord"}]}]},{"group":"Self-Hosting","pages":[{"group":"Deployment Guide","pages":[{"title":"General","href":"/nao-agent/self-hosting/deployment-guide"},{"title":"Kubernetes (Helm)","href":"/nao-agent/self-hosting/kubernetes"},{"title":"AWS","href":"/nao-agent/self-hosting/deploy-aws"}]},{"group":"Advanced deployment","pages":[{"title":"Host Multiple Projects","href":"/nao-agent/self-hosting/multiple-projects"},{"title":"Deployment-managed context files","href":"/nao-agent/self-hosting/context-source"},{"title":"LLM Observability","href":"/nao-agent/self-hosting/observability"}]}]},{"group":"nao Cloud","pages":[{"title":"Get Started","href":"/nao-agent/cloud/get-started"},{"title":"Onboarding agent","href":"/nao-agent/cloud/onboarding"},{"title":"Billing \u0026 credits","href":"/nao-agent/cloud/billing"}]},{"group":"nao Enterprise","pages":[{"title":"Overview","href":"/nao-agent/enterprise/overview"},{"title":"Authentication","href":"/nao-agent/enterprise/authentication"},{"title":"Permissions","href":"/nao-agent/enterprise/permissions"},{"title":"White-Label Branding","href":"/nao-agent/enterprise/white-label"}]},{"group":"Developers","pages":[{"title":"Contributing to nao","href":"/nao-agent/developers/overview"}]}]},{"tab":"nao IDE","pages":[{"title":"nao IDE","href":"/nao-ide/get-started/welcome"}]}]},"basePath":"","title":"File Explorer - nao Labs","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-u3J1-UOn.js","DynamicMarkdown-B-f2cqXQ.js","zoom-image-lightbox-DTFzvaXJ.js","lightbox-handle-r17bVUz3.js"]}