You just got free model access and a free server. Did your quality bar fall in that same hour? I keep hearing four myths after people unlock a cheap lab. This FAQ is the receipt I want first.
Why this FAQ exists
Free compute changes the price of another attempt. It does not change the cost of a wrong shape. People treat a free remote box like a hall pass. Then a key leaks, or a stack appears from nowhere.
I am not arguing against cheap remote labs. I am arguing against the unpaid stories we tell. You still need a contract, a branch, and a replay command.
Disclosure: This article was prepared as part of MonkeyCode's product outreach.
When I need a disposable room for this ritual, I use a cheap lab. That lab needs free model access and a free server option. MonkeyCode is one place that offers both. Remove that name tomorrow and the myths remain. The checklist below still works on a laptop.
The four claims I keep hearing
- "Retries are free, so they are my tests."
- "The server is throwaway, so secrets are fine."
- "The model can invent architecture. I will tidy later."
- "If the sandbox dies, nothing durable happened."
Each claim has a tiny piece of truth. Each one dies under a boring command. Ready to kill them in order?
Myth 1: Retries are a test suite
What people repeat
The model costs nothing extra tonight, right? So another loop must beat writing an assertion. They stare at the output until it looks friendly. Then they ship the vibe.
What that claim misses
A retry only proves the agent can try again. It does not pin behavior to one command. Can you rerun last night's success without the original chat? If not, you collected weather.
A check you can run
This is a proposed workflow, not a scored benchmark. Use a throwaway branch. Do not invent green numbers you did not measure.
#!/usr/bin/env bash
# proposed: compare two agent loops from the same HEAD
set -euo pipefail
base=$(git rev-parse HEAD)
git checkout -B receipt/loop-a "$base"
# run agent loop A, then snapshot
git diff --stat "$base" > /tmp/loop-a.stat
git checkout -B receipt/loop-b "$base"
# run agent loop B from the same base, then snapshot
git diff --stat "$base" > /tmp/loop-b.stat
diff -u /tmp/loop-a.stat /tmp/loop-b.stat || true
Did both loops edit the same files? Did they invent different helpers with matching names? Then you do not have tests. You have two moods.
Corrected mental model
A free retry is a sample from a noisy process. A test is a sentence the machine can fail. Write one failing command before the fifth loop. Cheap generation makes undisciplined retries look productive.
FAQ: Is a free server a reason to skip tests tonight? No, it is a reason to write a smaller test.
Myth 2: Throwaway servers make secrets cheap
What people repeat
It is not my laptop, so the blast radius looks cute. The box will vanish, so history does not count. I will rotate the token after the demo. Have you ever actually rotated it that night?
What that claim misses
Free does not mean air-gapped from the public network. Shell history, env files, and crash dumps still exist. The agent can still print a secret into a log you copy home.
A check you can run
#!/usr/bin/env bash
# proposed: name the risk before the first prompt
set -euo pipefail
echo "host=$(hostname) pwd=$(pwd)"
echo "== secret-shaped env names =="
env | awk -F= 'BEGIN{IGNORECASE=1} $1 ~ /(KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL|PRIVATE)/ {print $1}'
echo "== tracked files that look like creds =="
git ls-files | grep -Ei '(\.env|id_rsa|credential|secret)' || true
If either list is not empty, the myth is already false. A free server is still a computer. Computers keep receipts you did not ask for.
Corrected mental model
Treat the free box as untrusted storage with a keyboard. Pass secrets through a channel you can revoke. Never through the prompt. Never through a file the agent can cat.
FAQ: Can I paste a key because the disk is temporary? No, temporary disks still speak HTTP.
Myth 3: Architecture can wait because generation is cheap
What people repeat
We do not know the shape yet. Let the agent explore the problem space. Architecture is a refactor we will schedule later. Does that sentence sound like a plan or like hope?
What that claim misses
The first files become the architecture whether you named them or not. A free model picks a stack so the loop can stop. You pay for that stack at full human price later.
Why do agents assume a framework so quickly? Because stopping the loop feels like success. Success without refusals is just motion.
A check you can run
Refuse to start without a contract file the agent did not write.
# TASK_CONTRACT.md — humans fill this, models only echo it
- Outcome (one sentence):
- Non-goals:
- Allowed languages and frameworks:
- Forbidden directories:
- Data that must not leave this box:
- Reproduce command that means done:
Then make the first step a restatement. Ask for the contract in the model's own words. If it cannot repeat the refusals, it will invent structure. Invented structure is still architecture.
Here is a tiny guard you can drop in. Label: proposed code, not a production framework.
# proposed: fail closed if the contract is missing or empty
from pathlib import Path
import sys
required = [
"Outcome",
"Non-goals",
"Allowed languages",
"Forbidden directories",
"Reproduce command",
]
path = Path("TASK_CONTRACT.md")
if not path.is_file():
print("contract file missing")
sys.exit(2)
text = path.read_text(encoding="utf-8")
missing = [k for k in required if k.lower() not in text.lower()]
if missing:
print("contract missing:", ", ".join(missing))
sys.exit(2)
if "TODO" in text or not text.strip():
print("contract is still a stub")
sys.exit(2)
print("contract present; still read it yourself")
Corrected mental model
Architecture is the list of things you will refuse. Free models need more refusals, not fewer. Cheap tokens make accidental structure the default product.
FAQ: Can I let the agent pick the stack for speed? Only if you already wrote the refusals down.
Myth 4: If the sandbox dies, the work never existed
What people repeat
The disk is ephemeral, so there is nothing to commit. The session was only a sketch. Decisions inside a dying box do not count. Then someone pastes a function into production two hours later.
What that claim misses
You still copied snippets. You still chose a library. You still taught the team a shape. Ephemeral hardware does not make decisions evaporate.
A check you can run
#!/usr/bin/env bash
# proposed sandbox receipt — copy this file off the box
set -euo pipefail
stamp=$(date -u +%Y%m%dT%H%M%SZ)
out="${RECEIPT_PATH:-$HOME/sandbox-receipt-$stamp.txt}"
{
echo "utc=$(date -u +%FT%TZ)"
echo "host=$(hostname)"
echo "pwd=$(pwd)"
echo "head=$(git rev-parse HEAD 2>/dev/null || echo none)"
echo "branch=$(git branch --show-current 2>/dev/null || echo none)"
echo "dirty_files=$(git status --porcelain 2>/dev/null | wc -l | tr -d ' ')"
echo "python=$(command -v python3 || echo none)"
echo "node=$(command -v node || echo none)"
echo "contract=$(test -f TASK_CONTRACT.md && echo present || echo missing)"
} | tee "$out"
echo "wrote $out"
Take that file with you when the session ends. A flattering transcript is not a replay kit. Did the work leave any artifact you could rerun offline?
Corrected mental model
Ephemeral compute still emits durable choices. If you cannot replay the session from a receipt, you rented a mood. Do not merge a mood.
FAQ: If the box vanishes, can I skip the branch? Skip the branch only if you also skip the merge.
Artifact: the go / no-go table
Use this table before the agent gets a shell. It is a decision aid, not a score. Fill it on paper if you do not trust the box yet.
| Question | If yes | If no |
|---|---|---|
Is TASK_CONTRACT.md filled by a human? |
Continue | Do not start the agent |
| Do secret-shaped env names exist on the box? | Redact or leave | Continue |
| Can you name one reproduce command? | Put it in the contract | You are still wandering |
| Will you compare two loops from the same HEAD? | You have samples | You are gambling on a vibe |
| Must the result survive this disk? | Branch, then copy the receipt | Notes only; no merge |
Want a one-liner that fails closed?
test -s TASK_CONTRACT.md || { echo "no contract"; exit 2; }
That line stops a loop you cannot judge. Pair it with the env-name scan. Then pair both with the receipt copy. Three small commands beat one long apology.
Who should not follow this
Do not put production secrets on a free remote agent box. Do not treat that box as your only backup. Do not use it when a named, audited environment is required. Do not use it to dodge a design review on a regulated workflow.
If you need guaranteed hardware, duration, or a named model, this FAQ will not provide them. I will not invent quotas, SKUs, or permanence claims. Availability is not a benchmark you can cite.
Limitations
The receipt does not prove the model is good. It proves you asked ugly questions on purpose. Two loops can still agree on a bad design. A clean tree can still hide a token in memory. The contract file can be ignored by a stubborn agent. You still have to read the diff.
I also cannot promise a free server stays free next month. Treat every session as possibly the last one. Copy artifacts off the machine while you still can.
This workflow will annoy people who want a demo in twelve minutes. Good. Twelve-minute demos are how accidental architecture ships. If your task is a throwaway sketch with no merge path, skip the table and say so out loud.
What to do instead of believing the myth
- Write the contract in a file, never only in chat.
- Snapshot HEAD and the dirty file count.
- Print secret-shaped env names before the first prompt.
- Allow one exploratory loop, then demand a reproduce command.
- Copy the receipt off the box before you log out.
That is the whole practice. It also works on a laptop under your desk. The free server only makes the ritual cheaper to start. It does not make the ritual optional.
If you already have free model access and a free server idle, run the receipt on an empty repo tonight. Judge the myths with commands, not with hope.
Top comments (0)