Harness blocks delegating real dev work: no git/gh/node in sandbox, high token cost

Open
#59 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
38/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
android, docker, fastapi, git, github, node.js, playwright, python, react-native

Research direction

Start by reading the harness sandbox and verification setup, then trace how workspace-write handles Git, PATH, and tool execution. The issue lists Git access, host-side verification, token reporting, and unsupported QA dependencies as possible directions; agree on a focused scope before changing behavior. Done means the chosen limitation has a documented or implemented resolution that can be verified in the harness.

Written by the indexing model from the issue text.

Description

Findings from using tether (claude-cli/sonnet) as the swe and reviewer for a real project (Cashlytics: FastAPI + Expo/React Native, one PR per task). Model output quality was fine; the harness environment was the blocker.

Observed

1. No git / gh in sandbox (workspace-write)

  • git worktree add failed: unable to access '.git/config': Permission denied; sandbox reported access to .git/config or hooks is blocked.
  • So swe cannot create a branch, commit, push or open a PR. The caller had to do all git/gh steps. The agent correctly stopped and asked instead of working around the block.
  • A read-only reviewer likewise cannot use gh pr view/diff or merge; it can only read files in a worktree.

2. No node/npm on PATH

  • HOME is set to the repo root, so ~/.nvm is not found; absolute paths outside the workspace and .. are blocked.
  • swe could not run tsc, eslint or jest, so it coded blind and reported "nothing verified". Caller ran the checks (all passed). The verify param did not help since the commands cannot run inside the sandbox.

3. Shell quirks

  • Agent reported heredocs containing /-leading tokens were rejected, so it avoided regex literals in the code it wrote.

4. Cost / step budget

  • swe task (6 files, ~25 steps of real work): 44 steps, ~838k prompt tokens, ~7.5 min.
  • Reviewer: 35 of 40 max_steps, ~316k prompt tokens, and it said it had not read everything. 40 steps was too tight; prompt tokens grow roughly per step (unclear whether prompt caching is used).

5. Not possible at all: QA

  • QA needs docker, a browser (Playwright) and an Android emulator; none reachable from the sandbox.

Suggestions

  • Allow git (and optionally gh) in workspace-write, scoped to a worktree path, or document a supported way to do it.
  • Let the sandbox inherit PATH / toolchain (node, uv) or allow a configurable env/PATH, so verify commands can run.
  • Make verify run outside the agent sandbox (host-side), feeding failures back to the agent.
  • Surface prompt-cache usage / per-step token growth in tether_status; consider context folding defaults for long tasks.
  • Consider a mode where network/docker-dependent tasks are explicitly unsupported and fail fast.

Environment: tether MCP via Claude Code, model claude-cli/sonnet, sessions ses_b4567ea3 (failed at git setup), ses_9a796ada (swe), ses_8731d00f (reviewer).

Dominant language
Python
Stars
3
Forks
1
Avg merge
52m
Merged PRs (30d)
166

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from igormcsouza/tether

All issues in igormcsouza/tether

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.