Agent πŸ“‚ Shareβ„’

Agent πŸ“‚ Shareβ„’ connects a playground tab to a folder on your computer. Codex, Claude Code, or any agent that reads AGENTS.md or CLAUDE.md can then read what you see in the playground (the source, your selections, the console, screenshots and pins) and change it by editing files. This guide covers the requirements, the folders, starting and ending a share, Auto-Share, recovery after a reload, the indicators and the cautions. Agent πŸ“‚ Shareβ„’ is patent-pending; messages and the API call it Agent Folder Share.

How it works

You pick a root folder once. Each share then creates a work folder inside it for the playground's first route, writes a set of files there, and watches the folder with the browser's FileSystemObserver. An agent started in the work folder uses it like any project folder:

Every file is described in Agent files. Sharing makes no request to an AI service: the agent runs on your computer, with your own subscription. To try it, press Alt+A / βŒ₯+A, pick a root folder once, and start your agent in the work folder that the share creates. To see a whole session, follow Pairing with an AI agent.

Requirements

Agent πŸ“‚ Shareβ„’ needs a browser that has FileSystemObserver, and a playground that is a top-level tab, not an embedded frame. In practice that means Chrome or Edge on a desktop computer. In a browser without FileSystemObserver, or in an embedded playground, the Agent section of the Code menu is hidden and the Agent commands are not in the command palette.

A folder you can write to

The playground asks the browser for read and write access to a folder, with the File System Access API.

A network connection

Every share downloads the current RTCode.io agent guide and the Pin Use skill. With File Sync on, it also loads the File Sync module, and a failed download ends the share. Turn File Sync off to share without that module. Two small helper modules load as well: one makes the random folder names, and one parses eval requests (see File evals).

A few APIs need an active share. o.input.<m>() throws o.input.<m>() requires an active Agent Folder Share. (see o). Mutating o.pins calls, and pause() and resume(), reject with Pin API requires an active Agent Folder Share. edge.versions.load() throws Agent Folder Share is not active. The file evals need a share too. In a browser without support, o.input and o.pins do not exist.

See Browser support for the browsers that run the playground itself.

The root and work folders

Two folders are involved. Tooltips and toasts call them Root and Work. The agent works in the work folder.

The root folder

On the first share, the browser's folder picker opens. Choose the folder that should hold all your work folders, for example RTCode in your home folder. You pick it once: the browser remembers the root for every playground tab in the same browser profile.

  • If the browser cannot remember it, the toast Root link is session-only in this tab. appears, and the root lasts only for that tab.
  • Each share asks the browser for read and write access to the root. If the browser does not grant it, the share ends with the warning Root folder permission was not granted. The root stays linked.
  • When the page loads, the playground checks the stored root. If the browser cannot validate it, the playground forgets it and says Stored root expired. Pick it again. If the browser cannot read the stored root at all, the message is Could not restore the cached root. A root that was deleted or moved can also make the next share fail, with a warning toast.
  • To forget the root yourself, use Unlink Root.

The work folder

The work folder is named after the first route of the playground, Code.D[0] (see Code), or Unrouted when the playground has no route. It is created inside the root. Holding Alt while you share adds a random suffix.

PlaygroundWork folder
Route new<root>/new/
Route example.com/docs<root>/example.com/docs/
No route<root>/Unrouted/
Route new, shared with Alt<root>/new-Xa_3k/: a - and five random characters from A-Z a-z 0-9 - _
  • A route path that contains / creates nested folders. The work folder of a parent route therefore contains the work folders of the routes below it: with the routes example.com and example.com/docs, the second folder sits inside the first.
  • All unrouted playgrounds use the same Unrouted folder. A second unrouted tab that shares at the same time meets the another-window prompt. Share it with Alt to give it its own folder.
  • The name is fixed for the whole session. Editing the routes during a share does not move the folder, and a retry after a conflict reuses the same name, suffix included.
  • The Share and Unshare tooltips show the tree, Root and ← Work. Before a root is stored they read ← (pick once) Root. While Alt is held, the Share tooltip shows the suffix.

Starting a share

Ways to start

The Agent section of the Code menu has up to four items: Pins (Ctrl+P / ⌘+P), Explore, Share and Unshare. Share shows only while no folder is shared. The other three show only while one is. The Code menu is the logo button at the far left; its tooltip reads File, and Alt+F opens it. Open the command palette with F1.

WayKeysWhat it does
Share item, or ✨ Agent: πŸ“‚ ShareAlt+A / βŒ₯+AShares the folder.
✨ Agent: πŸ“‚ Share…-Opens the Code menu with Share focused, so that you can add modifiers.
✨ Agent: πŸ“‚ Share + πŸ”΄ Output…Ctrl+Alt+A / ⌘+βŒ₯+AShares and starts an Output capture. See Share with a screenshot.
✨ Agent: πŸ“ PinsCtrl+P / ⌘+PShares first when no folder is shared, without a capture, and then starts picking pins.
✨ Agent: πŸ“ Pins + πŸ”΄ Output…Ctrl+Alt+P / ⌘+βŒ₯+PShares with an Output capture, or adds one to a running share, and starts picking pins.
Auto-Share-Shares by itself when a routed playground loads.

The keys also work outside the editor, but not while the output has focus: the output does not forward Alt+A or Ctrl+Alt+A. A key that runs a command still obeys its conditions, so Share does nothing while a folder is shared. Some palette labels contain characters that you cannot see or type easily: the labels of Share, Pins and Pins Stop end with an invisible filler character, and the two Share ← Folder labels spell Share with a Cyrillic Π°, so typing share does not find them. Type folder, enable or disable instead.

Modifier keys on the Share item

Click the Share item, or focus it and press Enter, with these modifiers. They combine.

ModifierNameEffect
ShiftEmptyDeletes every entry of the work folder before writing fresh files. Ignored while Share ← Folder is on.
CtrlCaptureWhen no capture runs, opens the capture chooser and starts a capture, so that πŸ“Έ.png is written.
AltSuffixAdds a random suffix to the work folder name.
SpaceToggle Auto-ShareOn the focused item, toggles Auto-Share.
Enter-Closes the menu and shares with the modifiers you hold, for example Shift+Enter.

Empty deletes files and folders recursively. Everything goes: AGENTS.md, CLAUDE.md, .agents/, .claude/, your own notes and nested route folders. A warning toast with a recycle icon says so. With File Sync on, the folder then counts as empty, so no Files differ dialog appears and the editor wins.

Capture opens the dialog of Capture: Window…, whose cancel button reads Skip. Skipping continues the share without a screenshot. Cancelling the browser's own picker does the same, after a danger toast with the browser's message. Without Region Capture there is no chooser: the browser's picker asks for a window directly. When a capture starts, the share writes πŸ“Έ.png, and Unshare stops a capture that the share started.

On macOS the Capture and Delete modifier is the Control key (βŒƒ), not ⌘. The keyboard path works: focus the item and press Ctrl+Enter.

What a share does

While it starts, a toast titled Agent πŸ“‚ Shareβ„’ Β· patent-pending Β· by Elefunc, Inc. lists what the share will maintain. It stays until startup ends. A share runs these steps:

  1. It asks the browser for access to the stored root, or shows the folder picker.
  2. With File Sync on, it compares existing files with the editor. The Files differ dialog appears here if they differ; see File Sync conflicts.
  3. It creates or opens the work folder, and checks whether another window is sharing it.
  4. It deletes stale swap files (*.crswap) at the top level of the work folder, and empties the folder when you used Shift.
  5. It downloads the current agent guide and the Pin Use skill, and installs the skill under .agents/ and .claude/.
  6. It restores the pins.
  7. It writes the initial files in parallel: AGENTS.md and CLAUDE.md; πŸ“„.html and the exported files; πŸ“„.sel; an empty πŸ“œ.json; the pin files. It also deletes io.eval.js and io.eval.json.
  8. It opens the console writer, starts or removes the screenshot, and starts watching the folder.

The files that the toast lists, grouped as the toast groups them:

GroupFiles
Playgroundio.eval.js, io.eval.json, and πŸ“Έ.png only when capturing
InputπŸ“„.html, πŸ“„.sel
Outputo.eval.js, o.eval.json, πŸ“œ.json*, πŸ“.#.json, and πŸ“.#.png only when capturing
GuidanceAGENTS.md (labelled Codex) and CLAUDE.md

Two files are not deleted at share start: o.eval.js and o.eval.json. A leftover o.eval.json from an earlier session can therefore be stale.

When startup ends, a success toast shows the Root β†’ Work tree. If startup fails:

  • Cancelling the folder picker shows Aborted.
  • Cancel in the Files differ dialog ends the share silently.
  • A File Sync error ends the share with a warning toast that shows its message. The root stays linked.
  • Any other error, such as a failed download of the agent guide, shows a warning toast with the message. The root link may be forgotten as well, in which case the next share asks for the folder again.

Another window is already sharing

While a share is active, the work folder contains πŸ“œ.json.crswap. If that file exists when a share starts, another window, or a session that crashed, holds the console writer. The share then asks Another window is already sharing this route. Unshare it and try again? with two buttons:

Unshare & Retry

Asks the other playground windows in the same browser profile to unshare, waits 200 ms and retries. If the swap file is still there, it deletes it once and retries again. If that fails too, the toast Another window is sharing ends the attempt. This also clears a swap file that a crashed session left behind.

Cancel (focused by default)

Stops the share and shows the same toast.

Tip: To share two unrouted playgrounds at once, open the Code menu and Alt+click Share in the second one. Its work folder becomes something like Unrouted-k3_Zq.

Share with a screenshot

Share + πŸ”΄ Output… shares and starts an Output capture in one step. It runs only while no folder is shared. There is no chooser, but the browser's own screen-share prompt still appears. An active Output capture is reused. If a different kind of capture is active, a toast says Capture is already active. Stop it before switching to Output capture. and the share continues without a screenshot. Where screen capture is missing, the message is Screen capture is not available in this browser.

To add an Output capture to a share that already runs, use πŸ”΄ πŸ–₯️ Capture (output) (Ctrl+Alt+Shift+C / ⌘+βŒ₯+⇧+C) or Pins + πŸ”΄ Output…. Share + Output does nothing while a folder is shared.

Pins + πŸ”΄ Output… is available while no Output capture runs. Without a share it shares with an Output capture. With a share it makes sure an Output capture runs. Then it starts picking pins. Pins shares first when needed, without a capture, and the same key stops pins. See Screen capture and Pins and comments.

Auto-Share

Auto-Share starts a share by itself when a playground loads, so that you do not have to open the menu each time. It is a setting of the browser profile for rtcode.io, so it covers every playground tab.

Turning it on and off

Use the palette commands Toggle ✨ Agent: πŸ“‚ Auto-Share, Enable ✨ Agent: πŸ“‚ Auto-Share and Disable ✨ Agent: πŸ“‚ Auto-Share, or press Space on the focused Share or Unshare item. Both items carry an auto badge: green while Auto-Share is on, grey while it is off. Turning it on or off does not start or stop the current share, and Unshare does not turn it off.

When it shares

On page load, when a root is linked and the playground has a route. An unrouted playground is never shared automatically, except while a reload recovery is in progress. The success toast appears only when Auto-Share is on.

What it repeats

An automatic share repeats every step of a normal share start. πŸ“œ.json is emptied, io.eval.js and io.eval.json are deleted, and the agent guide is written again. With Auto-Share on, a fresh open therefore starts with an empty console log.

Which playgrounds

Every routed playground that you open in the browser profile, including playgrounds that other people send you as a link, when the link carries routes. Each creates its own work folder under the root and writes the agent guide there.

Permission

At load there is no user gesture, so the playground asks for the root's permission without one. If the browser does not grant access without prompting, the share fails with a warning toast, and the root stays linked. Whether the browser remembers the permission between visits depends on the browser.

Share ← Folder

Share ← Folder gives the files on disk priority over the editor when the next share starts. Use it to resume from what an agent left on disk, or to reopen a playground whose folder holds newer work. It exists only in the command palette, as ✨ Agent: πŸ“‚ ShΠ°re ← Folder: Enable and ✨ Agent: πŸ“‚ ShΠ°re ← Folder: Disable, and it lasts until the page reloads. Toasts read Share ← Folder Β· on and Share ← Folder Β· off and list what is loaded or written.

While it is on, the next share uses the work folder's files instead of the editor's:

With File Sync off, Share ← Folder loads only πŸ“„.html, if it exists, and applies it to the editor as one undoable edit with a toast. It still loads pins, and does not import exports. The flag also applies when you turn File Sync on during a running share.

With Share ← Folder off, pins in this page's memory win. A page that has none loads the pins on disk anyway, which is the usual case after a fresh load or an Unshare.

Resume from what is on disk

  1. Open the command palette with F1, type folder and choose ✨ Agent: πŸ“‚ ShΠ°re ← Folder: Enable.
  2. Press Alt+A / βŒ₯+A. The disk πŸ“„.html, its exports and βš™οΈ.js (File Sync on) and the disk pins are loaded into the playground. No Files differ dialog appears, and Shift is ignored.
  3. The flag resets on reload.

Ending a share

Unshare

Unshare (the menu item, or ✨ Agent: πŸ—‚οΈ Unshare) ends the share and leaves its files in the folder. The item also takes modifiers:

ModifierNameEffect
CtrlDeleteDeletes the work folder. A danger toast with a trash icon says so.
ShiftEmptyEmpties the work folder. A warning toast with a recycle icon says so.
SpaceToggle Auto-ShareOn the focused item, toggles Auto-Share.

With Ctrl+Shift, the folder is emptied first and then deleted. Delete removes the work folder recursively, child route folders included. It then walks up the route's parent folders: in each it removes operating-system junk files such as .DS_Store, Thumbs.db and Desktop.ini, and removes the folder if it is now empty.

An Unshare does this, in order:

  1. Stops File Sync, eval processing and screenshot refreshes.
  2. Restores the normal sync direction and stops watching the folder.
  3. Stops the screen capture, only if this share started it. Stopping a capture also deletes the pin images, πŸ“.<N>.png.
  4. Closes the console writer, which commits πŸ“œ.json.
  5. Applies Empty or Delete, if you asked for it.
  6. Removes the folder badge and tells the explorer that the share ended.
  7. Closes Pins and clears the pins from memory. The πŸ“.<N>.json files stay in the folder unless you emptied or deleted it.
  8. Lets the address bar update again.
  9. Shows a neutral toast, Root ← Work, and focuses the editor.

Warning: Empty and Delete are recursive and include the work folders of child routes. On a parent route, use them only if no child route is shared in another tab.

✨ Agent: πŸ—‚οΈ Unlink Root is a palette command that shows while a root is stored. It unshares first if a share is active, and then deletes the stored root. A success toast, ← (unlinked) Root, shows the old root name struck through. The next share asks for a folder.

If the browser cannot forget the root, the toast says Could not forget the cached root. This tab still drops its root, but the stored root may come back when you reload. Other open tabs keep their in-memory root until they reload.

Reload recovery and the address bar

Agents edit often, and each edit rewrites the playground's URL. Chromium records replaced URLs in history (Chromium issue 41091205). So while a share is active in a Chromium browser, the playground stops writing the address bar. A closable notice says so on every successful share: Folder sharing is active. The address bar is paused; reloads and deployments stay up to date. It disappears on Unshare.

Do not copy the address bar

While the pause lasts, the address bar keeps the URL from the moment sharing began. To send someone your current playground, unshare first: Unshare writes the current state back to the address bar. Deploys use the current state of the playground, not the address bar. See Linking and embedding.

Reload recovery

While the pause lasts, the playground keeps a recovery record for the tab. When you reload the tab and the saved URL still matches the address bar, the saved state replaces the URL's state before the editor starts, and, if a root is linked, the share reconnects automatically. This works for unrouted playgrounds too, and with or without Auto-Share. Any other kind of navigation discards the record. If the record cannot be saved, a persistent warning says Could not save reload recovery. Keep this tab open or deploy your changes before reloading.

Leaving the tab

Closing or reloading the tab asks for confirmation while a share is active or the URL state is unsaved.

While you share

Indicators

Folder badge

An amber folder badge appears on the Playground menu button (Alt+J). Its tooltip shows Folder, the root's name and, below it, the work folder's name.

Tab icon

While you share, capture or pin, the tab icon shows a three-character code. The first character is the share, the second the capture, the third the pins. An example is AO3: sharing, Output capture, three pins.

Transfer toasts

While a share is active, every write or read of a shared file shows a toast with the file's name, except πŸ“„.sel and the πŸ“ files. Writes to the folder are red with a down arrow. Reads into the playground are green with an up arrow. Writes during startup are silent.

CharacterMeaning
1stA sharing, _ not sharing
2ndCapture: W window, R playground, I input, O output, C other, _ none
3rdPins: _ no Pins interface, P paused, or 0 to 9, the pin count (capped at 9)

When none of the three is active, the normal icon shows.

Sync direction

While a folder is shared, the playground pins the sync direction to Input β†’ Output, and Input β†’ Output sync is unaffected. Changes that the live output makes on its own are held back instead of being written into the input at once. The F6 badge shows on the logo button, and F6 still pulls the output into the source on demand. Held-back changes are retried after Unshare. See Live sync and reloads.

Exploring the Agent Folder

✨ Agent: πŸ“‚ Explore…, or Explore in the Agent section of the Code menu while a folder is shared, opens a window with a tree, a preview and an editor for the work folder. Each playground tab reuses its own explorer window, and the explorer keeps working across reloads of the playground. When the share ends, it shows Waiting for playground share: <work>.

The explorer is just another writer to the folder: saving πŸ“„.html or an export file in it flows into the editor exactly like an agent's edit.

Toolbar

Refresh; New, which prompts New file name (default untitled.txt); Rename, which prompts Rename to; Delete, with a count; and Log, a dialog titled FS Changes (last 100). A label shows ⟦ <root>/<work> ⟧. The checkboxes Wrap, Scroll (tail), Number Lines and Fit into view (images) change the preview. New and Rename refuse names that contain / or that already exist.

Tree

Folders come first, then files, each sorted by name. Hidden entries such as .agents/ and .claude/ are listed. Click selects, Shift+click selects a range, Ctrl+click (⌘+click) toggles. The arrow keys move, Shift extends, β†’ and ← expand and collapse, and Enter opens. Delete (⌘+Backspace on macOS) deletes the selection after a browser confirmation.

Preview

Images appear with their size, videos with player controls. A file that is neither is text if its type is text/* or JSON, or if it is smaller than 512,000 bytes. Text is editable and saves itself 2 seconds after you stop typing; Unsaved shows until then. Other files show Binary file β€’ Preview disabled with their size. *.crswap files, such as πŸ“œ.json.crswap, are read-only tail views that reload every 100 ms; opening one ticks Scroll. πŸ“„.sel never shows line numbers.

Reserved names

πŸ“„.html, πŸ“„.sel, πŸ“œ.json, πŸ“Έ.png, πŸ“Έ.mp4, io.eval.js, io.eval.json, o.eval.js and o.eval.json cannot be renamed, and nothing can be renamed to them.

Pasting

Pasting files into the explorer writes them into the selected folder, into the parent of the selected file, or into the work folder when nothing is selected. A file with the same name is overwritten without asking. Pasting a πŸ“„.html therefore replaces the shared source, which then flows into the editor.

Live updates

The explorer watches the top level of the work folder. Changes inside subfolders, such as .agents/, may appear only after Refresh or after you collapse and expand the folder.

Note: While you type in the text preview, the Delete key currently asks to delete the selected file, and does not delete a character. Read the confirmation before you accept it.

Cautions

Warning: copy:redact affects only copy and cut. Agent Folder Share writes the complete, unredacted source to πŸ“„.html and the export files, and an agent can read and upload it. Keep secrets out of the playground while you share, or treat them as visible to your agent. See copy:redact.

Warning: Anything that can write to the work folder can run JavaScript in the playground through io.eval.js. This is the documented control channel for agents, and it includes deploying with edge.save.limit(). Share only with agents and tools that you trust. See File evals.

Messages

MessageMeaning
AbortedYou cancelled the folder picker.
Root folder permission was not granted.The browser did not grant read and write access to the root. The root stays linked.
Root link is session-only in this tab.The browser could not remember the root.
Stored root expired. Pick it again.The browser could not validate the stored root when the page loaded.
Could not restore the cached root.The browser could not read the stored root.
Could not forget the cached root.Unlink Root could not delete the stored root.
Another window is already sharing this route. Unshare it and try again?A prompt with Unshare & Retry and Cancel; see above.
Another window is sharingThe retry failed, or you cancelled the prompt.
Capture is already active. Stop it before switching to Output capture.A command wanted an Output capture while another kind of capture runs.
Screen capture is not available in this browser.The browser has no screen capture.
Folder sharing is active. The address bar is paused; reloads and deployments stay up to date.The notice of the address-bar pause.
Could not save reload recovery. Keep this tab open or deploy your changes before reloading.The recovery record could not be saved.

Availability

FeaturePlaygroundRTEdge.netNotes
Share, Unshare and ExploreYesNoNeeds FileSystemObserver and a top-level playground: Chrome or Edge on a desktop. Hidden in embedded playgrounds.
Auto-Share and Share ← FolderYesNoThe same browsers. Share ← Folder is palette only and lasts until reload.
Address-bar pause and reload recoveryYesNoChromium browsers.

See also