Add additional working directories to Agent sessions #682

Description

@taras

Story

As an executable-document author, I want an Agent session to work in specified
directories beyond its primary working directory, so one session can work
across related projects without gaining access to unrelated files.

Example outcome

A session starts in /work/product and also receives access to
/work/shared-docs and /work/design-system.

  • /work/product remains the session's primary working directory.
  • The Agent can use only the additional directories the document requested and
    the host authorized.
  • Specifying a directory requests access; it does not grant access by itself.
  • A provider that cannot enforce the exact directory access must refuse before
    starting Agent work. Here, a provider is the adapter that launches or connects
    to the coding Agent.

The public Markdown spelling for requesting these directories remains an
architecture decision. This issue must settle that spelling before
implementation begins.

Current gap

XMD's session-launch request and durable resume record already contain an
ordered additionalDirectories field, but every session records an empty list.
There is no Markdown component for adding a directory, and no provider maps an
additional directory into an Agent session.

#517 delivered prepared native session launch and intentionally left this
capability for a separate story.

Decisions required

Before implementation, settle:

  • how an author specifies an additional directory and where that declaration may
    appear;
  • how relative paths resolve;
  • whether access can be read-only or read-write, and whether an omitted mode has
    a default;
  • how ordering, duplicates, overlapping directories, and conflicting modes
    behave;
  • how the trusted host confirms that every directory is within the filesystem
    access it may grant;
  • how the directory set becomes part of session identity, preventing reuse of a
    session created with different access;
  • what XMD retains so an interrupted session can resume with the same directory
    contract without exposing unauthorized host paths;
  • how each provider reports and enforces the access modes it supports; and
  • which ordinary runs and session-launch profiles may offer the capability.

Workflow Agents continue to receive repository observations through
XMD-mediated operations. This issue does not give them direct access to the
retained workflow Workspace.

Acceptance

  • One Agent session receives its primary working directory and two additional
    directories the host authorized, in stable order.
  • Adding directories does not change the primary working directory or insert
    file contents into the Agent's instructions.
  • Empty, escaping, conflicting, and unauthorized paths refuse before provider
    work begins.
  • Duplicate and overlapping paths follow one documented rule.
  • A requested access mode is enforced exactly or refused as unsupported.
  • A session created with one directory set cannot be silently reused with
    another.
  • Resuming an incomplete session requires both the retained directory contract
    and current host authorization. Replaying completed work starts no provider.
  • Success, failure, and cancellation leave no temporary access or provider
    ownership behind.
  • Deterministic tests cover resolution, ordering, conflicts, authorization,
    provider support, session reuse, resumption, and cleanup.
  • A provider advertises additional-directory support only after an opt-in
    integration test proves its mapping.

Out of scope

  • Automatically discovering or injecting nested AGENTS.md files.
  • Giving workflow Agents direct access to retained Workspace materialization.
  • Claiming filesystem containment for arbitrary JavaScript, subprocesses, or
    providers that cannot enforce it.
  • Delivering the broader least-authority Quest in Quest: Enforce least authority across xmd workflows #536.

Related work

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestsecuritySecurity hardening

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      Add additional working directories to Agent sessions #682

      Description

      @taras

      Story

      As an executable-document author, I want an Agent session to work in specified
      directories beyond its primary working directory, so one session can work
      across related projects without gaining access to unrelated files.

      Example outcome

      A session starts in /work/product and also receives access to
      /work/shared-docs and /work/design-system.

      • /work/product remains the session's primary working directory.
      • The Agent can use only the additional directories the document requested and
        the host authorized.
      • Specifying a directory requests access; it does not grant access by itself.
      • A provider that cannot enforce the exact directory access must refuse before
        starting Agent work. Here, a provider is the adapter that launches or connects
        to the coding Agent.

      The public Markdown spelling for requesting these directories remains an
      architecture decision. This issue must settle that spelling before
      implementation begins.

      Current gap

      XMD's session-launch request and durable resume record already contain an
      ordered additionalDirectories field, but every session records an empty list.
      There is no Markdown component for adding a directory, and no provider maps an
      additional directory into an Agent session.

      #517 delivered prepared native session launch and intentionally left this
      capability for a separate story.

      Decisions required

      Before implementation, settle:

      • how an author specifies an additional directory and where that declaration may
        appear;
      • how relative paths resolve;
      • whether access can be read-only or read-write, and whether an omitted mode has
        a default;
      • how ordering, duplicates, overlapping directories, and conflicting modes
        behave;
      • how the trusted host confirms that every directory is within the filesystem
        access it may grant;
      • how the directory set becomes part of session identity, preventing reuse of a
        session created with different access;
      • what XMD retains so an interrupted session can resume with the same directory
        contract without exposing unauthorized host paths;
      • how each provider reports and enforces the access modes it supports; and
      • which ordinary runs and session-launch profiles may offer the capability.

      Workflow Agents continue to receive repository observations through
      XMD-mediated operations. This issue does not give them direct access to the
      retained workflow Workspace.

      Acceptance

      • One Agent session receives its primary working directory and two additional
        directories the host authorized, in stable order.
      • Adding directories does not change the primary working directory or insert
        file contents into the Agent's instructions.
      • Empty, escaping, conflicting, and unauthorized paths refuse before provider
        work begins.
      • Duplicate and overlapping paths follow one documented rule.
      • A requested access mode is enforced exactly or refused as unsupported.
      • A session created with one directory set cannot be silently reused with
        another.
      • Resuming an incomplete session requires both the retained directory contract
        and current host authorization. Replaying completed work starts no provider.
      • Success, failure, and cancellation leave no temporary access or provider
        ownership behind.
      • Deterministic tests cover resolution, ordering, conflicts, authorization,
        provider support, session reuse, resumption, and cleanup.
      • A provider advertises additional-directory support only after an opt-in
        integration test proves its mapping.

      Out of scope

      • Automatically discovering or injecting nested AGENTS.md files.
      • Giving workflow Agents direct access to retained Workspace materialization.
      • Claiming filesystem containment for arbitrary JavaScript, subprocesses, or
        providers that cannot enforce it.
      • Delivering the broader least-authority Quest in Quest: Enforce least authority across xmd workflows #536.

      Related work

      Activity

      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        enhancementNew feature or requestsecuritySecurity hardening

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          Add additional working directories to Agent sessions #682

          Description

          @taras

          Story

          As an executable-document author, I want an Agent session to work in specified
          directories beyond its primary working directory, so one session can work
          across related projects without gaining access to unrelated files.

          Example outcome

          A session starts in /work/product and also receives access to
          /work/shared-docs and /work/design-system.

          • /work/product remains the session's primary working directory.
          • The Agent can use only the additional directories the document requested and
            the host authorized.
          • Specifying a directory requests access; it does not grant access by itself.
          • A provider that cannot enforce the exact directory access must refuse before
            starting Agent work. Here, a provider is the adapter that launches or connects
            to the coding Agent.

          The public Markdown spelling for requesting these directories remains an
          architecture decision. This issue must settle that spelling before
          implementation begins.

          Current gap

          XMD's session-launch request and durable resume record already contain an
          ordered additionalDirectories field, but every session records an empty list.
          There is no Markdown component for adding a directory, and no provider maps an
          additional directory into an Agent session.

          #517 delivered prepared native session launch and intentionally left this
          capability for a separate story.

          Decisions required

          Before implementation, settle:

          • how an author specifies an additional directory and where that declaration may
            appear;
          • how relative paths resolve;
          • whether access can be read-only or read-write, and whether an omitted mode has
            a default;
          • how ordering, duplicates, overlapping directories, and conflicting modes
            behave;
          • how the trusted host confirms that every directory is within the filesystem
            access it may grant;
          • how the directory set becomes part of session identity, preventing reuse of a
            session created with different access;
          • what XMD retains so an interrupted session can resume with the same directory
            contract without exposing unauthorized host paths;
          • how each provider reports and enforces the access modes it supports; and
          • which ordinary runs and session-launch profiles may offer the capability.

          Workflow Agents continue to receive repository observations through
          XMD-mediated operations. This issue does not give them direct access to the
          retained workflow Workspace.

          Acceptance

          • One Agent session receives its primary working directory and two additional
            directories the host authorized, in stable order.
          • Adding directories does not change the primary working directory or insert
            file contents into the Agent's instructions.
          • Empty, escaping, conflicting, and unauthorized paths refuse before provider
            work begins.
          • Duplicate and overlapping paths follow one documented rule.
          • A requested access mode is enforced exactly or refused as unsupported.
          • A session created with one directory set cannot be silently reused with
            another.
          • Resuming an incomplete session requires both the retained directory contract
            and current host authorization. Replaying completed work starts no provider.
          • Success, failure, and cancellation leave no temporary access or provider
            ownership behind.
          • Deterministic tests cover resolution, ordering, conflicts, authorization,
            provider support, session reuse, resumption, and cleanup.
          • A provider advertises additional-directory support only after an opt-in
            integration test proves its mapping.

          Out of scope

          • Automatically discovering or injecting nested AGENTS.md files.
          • Giving workflow Agents direct access to retained Workspace materialization.
          • Claiming filesystem containment for arbitrary JavaScript, subprocesses, or
            providers that cannot enforce it.
          • Delivering the broader least-authority Quest in Quest: Enforce least authority across xmd workflows #536.

          Related work

          Activity

          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            enhancementNew feature or requestsecuritySecurity hardening

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              Add additional working directories to Agent sessions #682

              Description

              @taras

              Story

              As an executable-document author, I want an Agent session to work in specified
              directories beyond its primary working directory, so one session can work
              across related projects without gaining access to unrelated files.

              Example outcome

              A session starts in /work/product and also receives access to
              /work/shared-docs and /work/design-system.

              • /work/product remains the session's primary working directory.
              • The Agent can use only the additional directories the document requested and
                the host authorized.
              • Specifying a directory requests access; it does not grant access by itself.
              • A provider that cannot enforce the exact directory access must refuse before
                starting Agent work. Here, a provider is the adapter that launches or connects
                to the coding Agent.

              The public Markdown spelling for requesting these directories remains an
              architecture decision. This issue must settle that spelling before
              implementation begins.

              Current gap

              XMD's session-launch request and durable resume record already contain an
              ordered additionalDirectories field, but every session records an empty list.
              There is no Markdown component for adding a directory, and no provider maps an
              additional directory into an Agent session.

              #517 delivered prepared native session launch and intentionally left this
              capability for a separate story.

              Decisions required

              Before implementation, settle:

              • how an author specifies an additional directory and where that declaration may
                appear;
              • how relative paths resolve;
              • whether access can be read-only or read-write, and whether an omitted mode has
                a default;
              • how ordering, duplicates, overlapping directories, and conflicting modes
                behave;
              • how the trusted host confirms that every directory is within the filesystem
                access it may grant;
              • how the directory set becomes part of session identity, preventing reuse of a
                session created with different access;
              • what XMD retains so an interrupted session can resume with the same directory
                contract without exposing unauthorized host paths;
              • how each provider reports and enforces the access modes it supports; and
              • which ordinary runs and session-launch profiles may offer the capability.

              Workflow Agents continue to receive repository observations through
              XMD-mediated operations. This issue does not give them direct access to the
              retained workflow Workspace.

              Acceptance

              • One Agent session receives its primary working directory and two additional
                directories the host authorized, in stable order.
              • Adding directories does not change the primary working directory or insert
                file contents into the Agent's instructions.
              • Empty, escaping, conflicting, and unauthorized paths refuse before provider
                work begins.
              • Duplicate and overlapping paths follow one documented rule.
              • A requested access mode is enforced exactly or refused as unsupported.
              • A session created with one directory set cannot be silently reused with
                another.
              • Resuming an incomplete session requires both the retained directory contract
                and current host authorization. Replaying completed work starts no provider.
              • Success, failure, and cancellation leave no temporary access or provider
                ownership behind.
              • Deterministic tests cover resolution, ordering, conflicts, authorization,
                provider support, session reuse, resumption, and cleanup.
              • A provider advertises additional-directory support only after an opt-in
                integration test proves its mapping.

              Out of scope

              • Automatically discovering or injecting nested AGENTS.md files.
              • Giving workflow Agents direct access to retained Workspace materialization.
              • Claiming filesystem containment for arbitrary JavaScript, subprocesses, or
                providers that cannot enforce it.
              • Delivering the broader least-authority Quest in Quest: Enforce least authority across xmd workflows #536.

              Related work

              Activity

              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                enhancementNew feature or requestsecuritySecurity hardening

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  Add additional working directories to Agent sessions #682

                  Description

                  @taras

                  Story

                  As an executable-document author, I want an Agent session to work in specified
                  directories beyond its primary working directory, so one session can work
                  across related projects without gaining access to unrelated files.

                  Example outcome

                  A session starts in /work/product and also receives access to
                  /work/shared-docs and /work/design-system.

                  • /work/product remains the session's primary working directory.
                  • The Agent can use only the additional directories the document requested and
                    the host authorized.
                  • Specifying a directory requests access; it does not grant access by itself.
                  • A provider that cannot enforce the exact directory access must refuse before
                    starting Agent work. Here, a provider is the adapter that launches or connects
                    to the coding Agent.

                  The public Markdown spelling for requesting these directories remains an
                  architecture decision. This issue must settle that spelling before
                  implementation begins.

                  Current gap

                  XMD's session-launch request and durable resume record already contain an
                  ordered additionalDirectories field, but every session records an empty list.
                  There is no Markdown component for adding a directory, and no provider maps an
                  additional directory into an Agent session.

                  #517 delivered prepared native session launch and intentionally left this
                  capability for a separate story.

                  Decisions required

                  Before implementation, settle:

                  • how an author specifies an additional directory and where that declaration may
                    appear;
                  • how relative paths resolve;
                  • whether access can be read-only or read-write, and whether an omitted mode has
                    a default;
                  • how ordering, duplicates, overlapping directories, and conflicting modes
                    behave;
                  • how the trusted host confirms that every directory is within the filesystem
                    access it may grant;
                  • how the directory set becomes part of session identity, preventing reuse of a
                    session created with different access;
                  • what XMD retains so an interrupted session can resume with the same directory
                    contract without exposing unauthorized host paths;
                  • how each provider reports and enforces the access modes it supports; and
                  • which ordinary runs and session-launch profiles may offer the capability.

                  Workflow Agents continue to receive repository observations through
                  XMD-mediated operations. This issue does not give them direct access to the
                  retained workflow Workspace.

                  Acceptance

                  • One Agent session receives its primary working directory and two additional
                    directories the host authorized, in stable order.
                  • Adding directories does not change the primary working directory or insert
                    file contents into the Agent's instructions.
                  • Empty, escaping, conflicting, and unauthorized paths refuse before provider
                    work begins.
                  • Duplicate and overlapping paths follow one documented rule.
                  • A requested access mode is enforced exactly or refused as unsupported.
                  • A session created with one directory set cannot be silently reused with
                    another.
                  • Resuming an incomplete session requires both the retained directory contract
                    and current host authorization. Replaying completed work starts no provider.
                  • Success, failure, and cancellation leave no temporary access or provider
                    ownership behind.
                  • Deterministic tests cover resolution, ordering, conflicts, authorization,
                    provider support, session reuse, resumption, and cleanup.
                  • A provider advertises additional-directory support only after an opt-in
                    integration test proves its mapping.

                  Out of scope

                  • Automatically discovering or injecting nested AGENTS.md files.
                  • Giving workflow Agents direct access to retained Workspace materialization.
                  • Claiming filesystem containment for arbitrary JavaScript, subprocesses, or
                    providers that cannot enforce it.
                  • Delivering the broader least-authority Quest in Quest: Enforce least authority across xmd workflows #536.

                  Related work

                  Activity

                  Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    enhancementNew feature or requestsecuritySecurity hardening

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      Add additional working directories to Agent sessions #682

                      Description

                      @taras

                      Story

                      As an executable-document author, I want an Agent session to work in specified
                      directories beyond its primary working directory, so one session can work
                      across related projects without gaining access to unrelated files.

                      Example outcome

                      A session starts in /work/product and also receives access to
                      /work/shared-docs and /work/design-system.

                      • /work/product remains the session's primary working directory.
                      • The Agent can use only the additional directories the document requested and
                        the host authorized.
                      • Specifying a directory requests access; it does not grant access by itself.
                      • A provider that cannot enforce the exact directory access must refuse before
                        starting Agent work. Here, a provider is the adapter that launches or connects
                        to the coding Agent.

                      The public Markdown spelling for requesting these directories remains an
                      architecture decision. This issue must settle that spelling before
                      implementation begins.

                      Current gap

                      XMD's session-launch request and durable resume record already contain an
                      ordered additionalDirectories field, but every session records an empty list.
                      There is no Markdown component for adding a directory, and no provider maps an
                      additional directory into an Agent session.

                      #517 delivered prepared native session launch and intentionally left this
                      capability for a separate story.

                      Decisions required

                      Before implementation, settle:

                      • how an author specifies an additional directory and where that declaration may
                        appear;
                      • how relative paths resolve;
                      • whether access can be read-only or read-write, and whether an omitted mode has
                        a default;
                      • how ordering, duplicates, overlapping directories, and conflicting modes
                        behave;
                      • how the trusted host confirms that every directory is within the filesystem
                        access it may grant;
                      • how the directory set becomes part of session identity, preventing reuse of a
                        session created with different access;
                      • what XMD retains so an interrupted session can resume with the same directory
                        contract without exposing unauthorized host paths;
                      • how each provider reports and enforces the access modes it supports; and
                      • which ordinary runs and session-launch profiles may offer the capability.

                      Workflow Agents continue to receive repository observations through
                      XMD-mediated operations. This issue does not give them direct access to the
                      retained workflow Workspace.

                      Acceptance

                      • One Agent session receives its primary working directory and two additional
                        directories the host authorized, in stable order.
                      • Adding directories does not change the primary working directory or insert
                        file contents into the Agent's instructions.
                      • Empty, escaping, conflicting, and unauthorized paths refuse before provider
                        work begins.
                      • Duplicate and overlapping paths follow one documented rule.
                      • A requested access mode is enforced exactly or refused as unsupported.
                      • A session created with one directory set cannot be silently reused with
                        another.
                      • Resuming an incomplete session requires both the retained directory contract
                        and current host authorization. Replaying completed work starts no provider.
                      • Success, failure, and cancellation leave no temporary access or provider
                        ownership behind.
                      • Deterministic tests cover resolution, ordering, conflicts, authorization,
                        provider support, session reuse, resumption, and cleanup.
                      • A provider advertises additional-directory support only after an opt-in
                        integration test proves its mapping.

                      Out of scope

                      • Automatically discovering or injecting nested AGENTS.md files.
                      • Giving workflow Agents direct access to retained Workspace materialization.
                      • Claiming filesystem containment for arbitrary JavaScript, subprocesses, or
                        providers that cannot enforce it.
                      • Delivering the broader least-authority Quest in Quest: Enforce least authority across xmd workflows #536.

                      Related work

                      Activity

                      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        enhancementNew feature or requestsecuritySecurity hardening

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          Add additional working directories to Agent sessions #682

                          Description

                          @taras

                          Story

                          As an executable-document author, I want an Agent session to work in specified
                          directories beyond its primary working directory, so one session can work
                          across related projects without gaining access to unrelated files.

                          Example outcome

                          A session starts in /work/product and also receives access to
                          /work/shared-docs and /work/design-system.

                          • /work/product remains the session's primary working directory.
                          • The Agent can use only the additional directories the document requested and
                            the host authorized.
                          • Specifying a directory requests access; it does not grant access by itself.
                          • A provider that cannot enforce the exact directory access must refuse before
                            starting Agent work. Here, a provider is the adapter that launches or connects
                            to the coding Agent.

                          The public Markdown spelling for requesting these directories remains an
                          architecture decision. This issue must settle that spelling before
                          implementation begins.

                          Current gap

                          XMD's session-launch request and durable resume record already contain an
                          ordered additionalDirectories field, but every session records an empty list.
                          There is no Markdown component for adding a directory, and no provider maps an
                          additional directory into an Agent session.

                          #517 delivered prepared native session launch and intentionally left this
                          capability for a separate story.

                          Decisions required

                          Before implementation, settle:

                          • how an author specifies an additional directory and where that declaration may
                            appear;
                          • how relative paths resolve;
                          • whether access can be read-only or read-write, and whether an omitted mode has
                            a default;
                          • how ordering, duplicates, overlapping directories, and conflicting modes
                            behave;
                          • how the trusted host confirms that every directory is within the filesystem
                            access it may grant;
                          • how the directory set becomes part of session identity, preventing reuse of a
                            session created with different access;
                          • what XMD retains so an interrupted session can resume with the same directory
                            contract without exposing unauthorized host paths;
                          • how each provider reports and enforces the access modes it supports; and
                          • which ordinary runs and session-launch profiles may offer the capability.

                          Workflow Agents continue to receive repository observations through
                          XMD-mediated operations. This issue does not give them direct access to the
                          retained workflow Workspace.

                          Acceptance

                          • One Agent session receives its primary working directory and two additional
                            directories the host authorized, in stable order.
                          • Adding directories does not change the primary working directory or insert
                            file contents into the Agent's instructions.
                          • Empty, escaping, conflicting, and unauthorized paths refuse before provider
                            work begins.
                          • Duplicate and overlapping paths follow one documented rule.
                          • A requested access mode is enforced exactly or refused as unsupported.
                          • A session created with one directory set cannot be silently reused with
                            another.
                          • Resuming an incomplete session requires both the retained directory contract
                            and current host authorization. Replaying completed work starts no provider.
                          • Success, failure, and cancellation leave no temporary access or provider
                            ownership behind.
                          • Deterministic tests cover resolution, ordering, conflicts, authorization,
                            provider support, session reuse, resumption, and cleanup.
                          • A provider advertises additional-directory support only after an opt-in
                            integration test proves its mapping.

                          Out of scope

                          • Automatically discovering or injecting nested AGENTS.md files.
                          • Giving workflow Agents direct access to retained Workspace materialization.
                          • Claiming filesystem containment for arbitrary JavaScript, subprocesses, or
                            providers that cannot enforce it.
                          • Delivering the broader least-authority Quest in Quest: Enforce least authority across xmd workflows #536.

                          Related work

                          Activity

                          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            enhancementNew feature or requestsecuritySecurity hardening

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              Add additional working directories to Agent sessions #682

                              Description

                              @taras

                              Story

                              As an executable-document author, I want an Agent session to work in specified
                              directories beyond its primary working directory, so one session can work
                              across related projects without gaining access to unrelated files.

                              Example outcome

                              A session starts in /work/product and also receives access to
                              /work/shared-docs and /work/design-system.

                              • /work/product remains the session's primary working directory.
                              • The Agent can use only the additional directories the document requested and
                                the host authorized.
                              • Specifying a directory requests access; it does not grant access by itself.
                              • A provider that cannot enforce the exact directory access must refuse before
                                starting Agent work. Here, a provider is the adapter that launches or connects
                                to the coding Agent.

                              The public Markdown spelling for requesting these directories remains an
                              architecture decision. This issue must settle that spelling before
                              implementation begins.

                              Current gap

                              XMD's session-launch request and durable resume record already contain an
                              ordered additionalDirectories field, but every session records an empty list.
                              There is no Markdown component for adding a directory, and no provider maps an
                              additional directory into an Agent session.

                              #517 delivered prepared native session launch and intentionally left this
                              capability for a separate story.

                              Decisions required

                              Before implementation, settle:

                              • how an author specifies an additional directory and where that declaration may
                                appear;
                              • how relative paths resolve;
                              • whether access can be read-only or read-write, and whether an omitted mode has
                                a default;
                              • how ordering, duplicates, overlapping directories, and conflicting modes
                                behave;
                              • how the trusted host confirms that every directory is within the filesystem
                                access it may grant;
                              • how the directory set becomes part of session identity, preventing reuse of a
                                session created with different access;
                              • what XMD retains so an interrupted session can resume with the same directory
                                contract without exposing unauthorized host paths;
                              • how each provider reports and enforces the access modes it supports; and
                              • which ordinary runs and session-launch profiles may offer the capability.

                              Workflow Agents continue to receive repository observations through
                              XMD-mediated operations. This issue does not give them direct access to the
                              retained workflow Workspace.

                              Acceptance

                              • One Agent session receives its primary working directory and two additional
                                directories the host authorized, in stable order.
                              • Adding directories does not change the primary working directory or insert
                                file contents into the Agent's instructions.
                              • Empty, escaping, conflicting, and unauthorized paths refuse before provider
                                work begins.
                              • Duplicate and overlapping paths follow one documented rule.
                              • A requested access mode is enforced exactly or refused as unsupported.
                              • A session created with one directory set cannot be silently reused with
                                another.
                              • Resuming an incomplete session requires both the retained directory contract
                                and current host authorization. Replaying completed work starts no provider.
                              • Success, failure, and cancellation leave no temporary access or provider
                                ownership behind.
                              • Deterministic tests cover resolution, ordering, conflicts, authorization,
                                provider support, session reuse, resumption, and cleanup.
                              • A provider advertises additional-directory support only after an opt-in
                                integration test proves its mapping.

                              Out of scope

                              • Automatically discovering or injecting nested AGENTS.md files.
                              • Giving workflow Agents direct access to retained Workspace materialization.
                              • Claiming filesystem containment for arbitrary JavaScript, subprocesses, or
                                providers that cannot enforce it.
                              • Delivering the broader least-authority Quest in Quest: Enforce least authority across xmd workflows #536.

                              Related work

                              Activity

                              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                enhancementNew feature or requestsecuritySecurity hardening

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions