---
name: subprocess-check-true-espone-i-segreti
description: "subprocess.run(check=True) mette gli argomenti del comando, token compresi, dentro l'eccezione che poi finisce stampata"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: d9cb587f-e008-4bf3-b0fb-b6182f56fea4
  modified: 2026-09-17T13:15:17.798Z
---

Successo il 17/9/2026 scrivendo `blob.py` (la carica di [[pipeline-pubblicazione]] su
Vercel Blob): `subprocess.run([..., "--rw-token", token, ...], check=True,
capture_output=True)` che fallisce solleva `CalledProcessError`, e la sua
rappresentazione testuale include `process.args`, cioè la lista di argomenti
per intero. Il traceback con il token in chiaro è finito nel mio output, cioè
esposto. Ho dovuto far ruotare le credenziali a Paolo.

**Why:** `check=True` è comodo ma delega la gestione dell'errore
all'eccezione di Python, e quell'eccezione non sa quali argomenti sono
segreti: li stampa tutti.

**How to apply:** quando un comando prende un segreto come argomento (token,
password, chiave), mai `check=True`. Si legge `r.returncode` a mano e si
solleva un errore proprio che riporta solo `r.stderr`, mai `r.args`. Vale per
ogni `subprocess.run` con un segreto in linea di comando, non solo per Blob.
