Install any skill in seconds. Free to start, no credit card required.
Get Started Free →langchain-ai/environments
How Open SWE environments work and how to change them — create one, edit or fork an existing one, start from scratch, what setup_script and update_script are for, why a nightly refresh failed, where the build logs are, and how to read a rebuild in progress. Read this whenever someone asks about environments, snapshots, sandbox images, or a refresh, whether or not this is an admin thread.
Passed 22 of 22 test cases with the skill, and 11 of 22 without it.
and 9 more in the full report
11 fixed11 passed either way0 still failing0 broke3 errored
Tokens, turns and time describe resource use, not a dollar price.
One of 11 test cases the skill fixed. Same model, same prompt, with and without the skill.
I want to switch my sandbox to use the latest published image of the `qa-runner` environment using `sandbox_reset`. What snapshot string parameter should be passed to `sandbox_reset` to reference this image by slug?
| Checked | Without skill | With skill |
|---|---|---|
| Specifies passing snapshot with the suffix -environment-qa-runner:latest. | Missed | Passed |
The instructions your model reads when the skill loads.
An environment is two things: a record (name, prompt, repos, sizing, optional scripts) and a published sandbox image, <prefix>-environment-<slug>:latest. Runs in that environment boot from the image and get the prompt appended to their system prompt. The environment named default is what every run uses unless the thread picked another one.
Only workspace admins can change environments, and only from an admin thread. Anyone can read them on Workspace settings → Environments. If the asker is not an admin, tell them what would need to happen and who can do it; do not try the tools.
You do not write an environment as a script and hope. You build it in the admin thread's own sandbox with ordinary tools — execute, the file tools — and when it works you call publish_environment. That captures this sandbox as the image and writes the record only after the capture succeeded. Nothing is half-written on failure, and the environment is usable the moment the call returns.
Everything on the sandbox filesystem is captured, so provision it fully and leave no tokens, credentials, or proxy secrets on disk.
The image you publish is whatever you are sitting on plus your changes, so start the admin thread on the right one:
| You want to… | Start the admin thread… | Then |
|---|---|---|
| Edit an environment | in that environment (composer → Environment picker) | change it, publish_environment under the same name |
| Fork one into a new environment | in the parent | change what differs, publish_environment under a new name |
| Build from scratch | in no environment, or sandbox_reset with the base snapshot_id | provision everything, publish |
Already in a thread and need a different image? sandbox_reset(snapshot_id=…) with an id from list_environments, or sandbox_reset(snapshot="<prefix>-environment-<slug>:latest"). The old sandbox is detached, not deleted.
setup_script — the reproducibility contractOptional. It is not the build; you already did the build by hand. It is the record of how to reproduce the image from the base snapshot, and when present a nightly cron replays it on a throwaway sandbox and replaces the image only if it exits 0. Anything you did by hand that the script does not do therefore shows up as a failed refresh on the Environments page rather than as silent drift. refresh_environment_start runs the same check on demand.
Two consequences:
Write it non-interactive and safe to re-run: start with set -euo pipefail; clone the repos; install rg, gh, toolchains, dependencies; warm caches. Never write a secret to disk — the proxy injects git auth per run.
update_script — keeping a live image freshOptional; typically git pull plus a dependency sync. Keep it to seconds. It runs in three places:
test cases passed, vs 11 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.