WARSHALL
Docs/Mobile remote/Pictures and files

Pictures and files

A terminal’s screen on the phone carries pictures of the interface the run is testing, and the files the run opened along the way.

The two strips

The terminal screen on the phone has two strips of thumbnails.

  • Screenshots holds the pictures the desktop took itself.
  • Captures holds the pictures the run saved.

Tapping a thumbnail asks the desktop for the full image, so nothing large is fetched before you open it. The phone gets the original when it fits in one message, and a copy scaled to the phone’s width when it does not.

Pictures are only taken while the mobile remote is on, since nobody would see them otherwise. The model is never asked to take a picture for the phone and is never told a phone exists. It reads the same tool output either way, so linking a phone costs no tokens.

Pictures the desktop takes

When a run’s own checkout has Playwright, its browser tests run in a browser the desktop serves, started from that checkout’s own Playwright so the versions match. The tests run as they always do and print what they always print.

While the remote is on, the desktop watches that browser. After each click, key press, typed input and form submit the test makes, it takes a picture of the page, and a second one cut to the element that was acted on. Page loads are captured too, and each page is captured once when the desktop starts watching it.

Some runs produce no desktop pictures.

  • A checkout without Playwright. Its tests, if any, launch their own browser and the desktop does not watch it.
  • Tests in Firefox or WebKit. Those browsers have no debugging port, so the tests pass as usual and no picture is taken.
  • A native window, an emulator, or a browser a script launches by itself instead of through the test runner.
  • A checkout whose Playwright was removed after the run started. The next test fails to connect, and the run goes on.

The browser the desktop serves for a terminal closes a minute after its last test disconnects, and also when the run ends or is stopped, when the terminal closes, and when the app quits.

Pictures the run saves

Every run, on every provider, is asked to save the screenshots it takes of an interface as png or jpg files in the folder named by the WARSHALL_SCREENSHOTS_DIR environment variable. That folder is the terminal’s inbox. It is named in every run’s environment, the run is allowed to write there, and the folder is watched for the whole run. A file is picked up once its writes have stopped.

The run is told the same thing whether or not a phone is linked. A picture saved anywhere else is not picked up, because the inbox is the one place the app looks.

Where they are kept

Copies live in the screenshots folder of the data folder. Each terminal keeps its newest forty pictures in each strip, and older ones are dropped. The same image written twice in a run is kept once. An image over 25 MB, and an empty file, are never kept. On the desktop, each picture is noted in the transcript as a system line that starts Screenshot saved and names the file.

Turning the remote on in the middle of a run sweeps every live inbox, so what the run already saved reaches the phone. The desktop also starts watching every test browser it is serving and takes a picture of each open page. Turning the remote off mid run stops the watching. The run notices neither.

Files a run opened

When a tool row in the transcript opened a file, the phone shows the file name under that row. This covers the file reading tools of every provider. For Claude Code that is its Read tool, for Codex a plain command that prints one file, and for a local model its file reading tool.

Tapping the name fetches the file. Images open inline, PDFs open in the phone’s own viewer, text and Markdown open as plain text, and any other kind of file says to open it on the desktop. The desktop only serves a path that some row of that terminal’s transcript opened, so the phone cannot ask for anything else.

  • An image or PDF over about twenty megabytes is answered as too large for the phone.
  • Text is cut at 200,000 characters.
  • A file that was deleted after the run opened it says so.