2025-09-24

Cuál es la allowlist?

Desde hace unos meses estoy usando cursor, el IDE, para programar. Como parte de ese uso, cuando hablo con las IAs, las mismas intentan correr comandos. Como es peligroso, uno tiene que andar aprobando cada comando. Pero como es engorroso, es posible whitelistear comandos para que corran sin preguntar (en este momento estoy usando la versión 1.6.45 en mac). El problema es que no pude encontrar en la GUI de cursor como ver/editar dichos comandos. Así que estuve usando el chat de cursor para encontrar los comandos que whitelistié y después de un ratito los encontramos :D. 
Para ver los comandos que tengo whitelisteados tengo que correr este comando:

% sqlite3 -noheader -list "$HOME/Library/Application Support/Cursor/User/globalStorage/state.vscdb" "SELECT je.value FROM ItemTable AS it, json_each(it.value, '$.composerState.yoloCommandAllowlist') AS je WHERE it.key='src.vs.platform.reactivestorage.browser.reactiveStorageServiceImpl.persistentStorage.applicationUser';"

diff

jq

grep

head

cd

git log

git diff

git show

npm audit

sed

awk

cat

echo

Seguramente si estás en una mac el mismo comando te ande a vos

dDesde hace unos meses estoy usando cursor, el IDE, para programar. Como parte de ese uso, cuando hablo con las IAs, las mismas intentan correr comandos. Como es peligroso, uno tiene que andar aprobando cada comando. 

Y haciendo esto me di cuenta que aprobé comandos complicados :/. sed y awk tienen la opción de editar archivos inline.

Para sacarlos tuve que salir de cursor y correr este comando (que reescribe toda la lista del whitelist):

% sqlite3 "$HOME/Library/Application Support/Cursor/User/globalStorage/state.vscdb" \

"UPDATE ItemTable SET value = json_set(value, '$.composerState.yoloCommandAllowlist', json('[\"diff\",\"jq\",\"grep\",\"head\",\"cd\",\"git log\",\"git diff\",\"git show\",\"npm audit\",\"cat\",\"echo\"]')) WHERE key='src.vs.platform.reactivestorage.browser.reactiveStorageServiceImpl.persistentStorage.applicationUser';"

Y después corrí esto para ver que quedó bien:

% sqlite3 -noheader -list "$HOME/Library/Application Support/Cursor/User/globalStorage/state.vscdb" \

"SELECT je.value FROM ItemTable AS it, json_each(it.value, '$.composerState.yoloCommandAllowlist') AS je WHERE it.key='src.vs.platform.reactivestorage.browser.reactiveStorageServiceImpl.persistentStorage.applicationUser';" 

Por último pedí en el chat que corra sed para ver que está todo bien :)

Esto me lleva a ver que cursor, el IDE, está super verde y pushean features que les faltan cosas. ¡Es un peligro!

PD: Es peor! Si la allowlist está activada puede correr comandos usando redirección de shell (>) y escribir sin confirmación del usuario. Por lo tanto hay que desactivarla hasta que arreglen esto. Para hacer esto podés ir a cmd-shift-p -> Cursor Settings -> Chat -> Auto-Run -> Auto-Run Mode y setear en Ask Every Time