galaxyproject / galaxyproject/loom

Orbit exec-guard denies `curl … | python3` JSON-consume pattern, forcing a brittle temp-file two-step

Open
#219 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
14
Forks
12
Avg merge
6d 5h
Merged PRs (30d)
17

Description

_Context: from a controlled experiment in which eight frontier models (opus, sonnet, gpt, gpt2, gemini-2.5-pro, gemini-3.5-flash, deepseek, haiku) each drove an Orbit session to reanalyze the same RNA-seq dataset (Santana 2023 *C. auris*) on 2026-06-02–04. Evidence quotes are from the per-run `activity.jsonl` logs._

## Problem

The exec-guard blocks piping remote content into an interpreter, which is the natural pattern for consuming Galaxy API JSON (`curl /api/... | python3 -c ...`). The brain's two-step workaround (write to a temp file, then parse) introduced its own failure.

## Evidence

- **opus**: `guard.decision ... decision: deny ... reason: "pipe remote content to an interpreter"` fired twice on `curl ... | python3 -c ...` against the Galaxy API. The temp-file fallback then hit the `json.JSONDecodeError` that caused the 29.6-min poll stall (see #N1 / opus 16:35:28–17:05:01).

## Impact

Medium. The guard is correct in spirit (don't pipe untrusted remote code), but the connected Galaxy server is trusted, so the blanket deny pushes the brain onto a more error-prone path.

## Proposed direction

Allowlist the authenticated Galaxy API host for the pipe-to-interpreter pattern, or provide a dedicated "fetch Galaxy API JSON" tool so the brain never needs raw `curl | python3`.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.