DEV Community

Jordan Huang
Jordan Huang

Posted on

FAQ: Five Myths About Free Models and Borrowed Disk

Did you trust the free model this morning? Or did you trust a disk you do not own?

I keep hearing the same five claims. They sound calm inside a busy chat. Those five claims are not real architecture.

This FAQ busts each claim with commands. Every myth should map to printed evidence. Keep the output beside the patch.

I will not recap latency myths here. I will not recap lockfile myths here. I will not recap git-author myths here.

The remaining gap is still painfully simple. You borrowed a machine without an inventory.

How to read each myth

Use one boring loop. Do not improvise a second loop.

  1. Read the claim developers keep repeating.
  2. Run the evidence command on that box.
  3. Replace the claim with the printed line.

Do not debate the assistant transcript. Debate a receipt file you can grep. A free model does not define a computer.

Why a receipt at all

Chat text is not a host inventory. Folder captions are not inodes either.

I needed one cheap place to rehearse receipts. MonkeyCode offers free model access and a free server option. Disclosure: This article was prepared as part of MonkeyCode's product outreach.

If you need a rehearsal room, that option is enough. The receipt script still runs on any Unix host.

I am not naming model SKUs here. I am not publishing timed benchmarks either. I am not promising disk lifetime or quotas.

Those marketing numbers go stale fast. A local receipt does not. Treat every snippet as a template until you run it.

Myth 1: The free model is obvious, so skip the id

The claim

"It is the free one. Everyone knows which."

Do you still know after three tabs? Do you know after one silent retry?

Why it spreads

Free sounds like a single obvious SKU. Chat UIs often hide the real field. People compare runs that never shared an id.

Evidence you can collect

Write the id before the first prompt. Do not recover it from memory later.

# template: paste from the UI, never from vibes
: "${MODEL_ID:=UNSET}"
echo "model_id=${MODEL_ID}" >> receipt.env
date -u +"%Y-%m-%dT%H:%M:%SZ" >> receipt.env
Enter fullscreen mode Exit fullscreen mode

If MODEL_ID stays UNSET, you have no experiment. You only have a story about price.

Corrected mental model

Free is a billing label, not an identifier. Pin the field before you judge the diff. Refuse comparisons that lack that field.

Myth 2: The working directory is my laptop repo

The claim

"The agent is already in the project. Relax."

Which clone is that sentence describing? Which dirty tree sits under it?

Why it spreads

The UI shows a friendly folder name. Humans read that caption as $HOME. Borrowed servers reuse names without mercy.

Evidence you can collect

pwd
ls -ld .
git rev-parse --show-toplevel 2>/dev/null || echo "NO_GIT_ROOT"
git rev-parse HEAD 2>/dev/null || echo "NO_HEAD"
git status --porcelain | wc -l
Enter fullscreen mode Exit fullscreen mode

If pwd is not the path you expected, stop. Do not apply the patch on faith.

Corrected mental model

The chat caption is only a label. pwd is the actual location. No HEAD means no claim about GitHub.

Myth 3: A green build on the free box ports home

The claim

"It compiled there. It will compile here."

Same compiler? Same libc? Same Node major?

Why it spreads

Green is addictive during a late session. One success feels like a full matrix. A free server is still one cell.

Evidence you can collect

uname -a
command -v python3 && python3 -V
command -v node && node -v
command -v go && go env GOOS GOARCH
cc -dumpmachine 2>/dev/null || true
Enter fullscreen mode Exit fullscreen mode

Copy those lines into receipt.md immediately. Compare them to your laptop later. Do not paste only "build passed."

Corrected mental model

Green means that box, that PATH, that moment. Portability is a second experiment. Schedule it before you merge.

Myth 4: Free means the box cannot reach the network

The claim

"Scratch box, no egress, so secrets are fine."

Who stated that rule in writing? Did you print the proxy variables?

Why it spreads

"Free sandbox" sounds sealed by default. The word sandbox is doing extra work. Sealed is a policy you have not read.

Evidence you can collect

Do not scan other people. Print local belief only.

env | grep -E '^(HTTP|HTTPS|NO)_PROXY=' || echo "NO_PROXY_VARS"
# If you test egress, curl a URL you own.
# Template only; leave MY_HEALTHCHECK_URL empty until it is yours.
# curl -sS -o /dev/null -w "%{http_code}\n" "$MY_HEALTHCHECK_URL"
Enter fullscreen mode Exit fullscreen mode

If you cannot state the egress rule, stop. Keep secrets off that disk.

Corrected mental model

Unknown network is not a firewall. It is a gap in the receipt. Borrowed disk plus unknown egress is a leak.

Myth 5: Closing the tab kills the job and wipes the disk

The claim

"I closed the chat. Nothing remains."

Process lifetime is not UI lifetime. Disk lifetime is not a browser tab.

Why it spreads

Web apps trained us badly here. Close the tab, session gone. Remote compute never signed that contract.

The opposite myth is also false. Do not assume the disk lives forever. Unknown lifetime cuts both ways.

Evidence you can collect

echo "pid=$$"
ps -o pid,etime,cmd -p $$
# after a reconnect, ask again
pgrep -af your-job-name || echo "NO_JOB"
ls -ld /tmp "$PWD"
Enter fullscreen mode Exit fullscreen mode

Record start time, pid, and reconnect facts. If you cannot prove death, skip secrets. If you cannot prove retention, skip backups.

Corrected mental model

UI close is a client event only. It is not SIGTERM on the box. Treat lifetime as unknown on purpose. Design for restart and for loss.

The receipt script

One file beats five myths. Keep the file small.

Save this as scripts/run-receipt.sh. Mark it executable after you save.

#!/usr/bin/env bash
# Template receipt. Unexecuted until you run it.
set -euo pipefail

out="${1:-receipt.md}"
{
  echo "# run receipt"
  echo
  echo "- utc: $(date -u +"%Y-%m-%dT%H:%M:%SZ")"
  echo "- host: $(hostname)"
  echo "- user: $(id -un)"
  echo "- uid: $(id -u)"
  echo "- pwd: $(pwd)"
  echo "- pid: $$"
  echo "- model_id: ${MODEL_ID:-UNSET}"
  echo "- uname: $(uname -a)"
  echo "- python: $(python3 -V 2>&1 || echo missing)"
  echo "- node: $(node -v 2>&1 || echo missing)"
  echo "- git_root: $(git rev-parse --show-toplevel 2>/dev/null || echo none)"
  echo "- git_head: $(git rev-parse HEAD 2>/dev/null || echo none)"
  echo "- dirty_paths: $(git status --porcelain 2>/dev/null | wc -l | tr -d ' ')"
  echo "- proxy_vars:"
  env | grep -E '^(HTTP|HTTPS|NO)_PROXY=' || echo "  (none)"
} > "$out"

echo "wrote $out"
Enter fullscreen mode Exit fullscreen mode

Run it like this on the borrowed box.

chmod +x scripts/run-receipt.sh
MODEL_ID="paste-from-ui" ./scripts/run-receipt.sh
cat receipt.md
Enter fullscreen mode Exit fullscreen mode

Commit a redacted receipt with the patch. Keep machine facts. Drop secret values.

Decision table

Ask one question before you paste code. Should this task touch a borrowed free server?

Situation Borrowed free server? Why
Scratch prompt, no secrets Yes, with a receipt Cost stays low if you record the box
.env with production tokens No Disk ownership is still unknown
Need bit-identical local reproduce Not as the only cell One green build is not a matrix
Cannot state egress rules No for credentials Unknown network is not a firewall
Job cannot be restarted No Lifetime is unknown both ways
Teaching juniors about agents Yes, if they keep receipts The lesson is the inventory

If two rows conflict, choose the stricter No. Write that No on the receipt.

Limitations

This receipt is not attestation. It is a text file you wrote.

A process can lie to you. A wrapper can rewrite uname. You get operational honesty, not cryptography.

The script does not freeze container images. It does not pin apt packages. It does not prove model weights. It records the id the UI showed.

I do not know your vendor retention story. You also do not, without a contract. Do not turn this FAQ into a compliance stamp.

Who should not use this approach

Skip the free-box path if any item matches.

  • You handle regulated data today.
  • You cannot redact a receipt safely.
  • You need a signed wipe SLA.
  • You cannot name the model field.
  • You will paste .env "just once."

Use a laptop you own instead. Or use a cluster with paper. This FAQ will not save a secret you already typed.

What to do on Monday

Pick one agent task, not ten. Generate receipt.md before the prompt.

Then prompt. Then patch. Then compare toolchains at home.

If model_id is UNSET, throw the run away. If pwd surprises you, throw the run away.

That is the whole method, short on purpose. Which myth did you repeat last week?

Top comments (0)