Upstash Redis plugin

The Upstash Redis plugin lets a Vaubaan Gateway mission use Upstash Redis without handing the agent a credential. Serverless Redis plane — databases through the Management API, key-value data through each database REST endpoint.

One account is one Upstash account (email and management API key); one resource is one Redis database. Its owner labels each database with an environment; key reads and writes, deletions, FLUSH, arbitrary commands and database management are separate permissions held per label.

Permissions

Each permission is a named risk of the plugin's catalog: a mission holds an explicit list of them, never "all". The severity is computed from the permission's six axes (undo, blast radius, data, cost, visible to, lasts); nothing is decided from it.

PermissionWhat it allowsSeverityWhy it is a risk
upstash-redis.read-database-metadataRead database list / details / stats (Management API reads)lowInventory of databases, their configuration, endpoints, and usage statistics. Surface of attack is negligible : metadata only, no data or credential leaks (`execute` strips the REST tokens from the Management API answers). This permission is the always-on baseline ; every read of the service needs it.
upstash-redis.read-dataRead Redis data (GET, KEYS, SCAN, HGETALL, LRANGE, SMEMBERS, TTL, DBSIZE)lowRead operations on the key-value data stored in a database. May expose application secrets if stored in Redis (session tokens, cached credentials). Standard posture for a coding agent in debug mode.
upstash-redis.write-dataWrite Redis data (SET, HSET, LPUSH, SADD — without a time to live)low (only for development, staging, prod)Create, overwrite or modify individual keys, through the dedicated tools or the generic `execute` tool. An overwrite replaces the previous value, which is lost unless it is kept elsewhere ; a RENAME replaces the destination key. Affects application state if the app reads from Redis at runtime. The deletion commands (DEL, UNLINK, the POP and REM families), every command that sets a time to live (EXPIRE, SETEX, SET … EX) or moves data out of a key (RENAME, LMOVE, SMOVE), FLUSH and arbitrary commands need it next to their own, more severe permission, so a mission holding `write-data` alone cannot run them : it can write and overwrite values that stay, nothing else.
upstash-redis.delete-dataDelete keys, fields, members or entries — now, or by a time to live or a move (DEL, UNLINK, HDEL, LPOP, EXPIRE, SET … EX, RENAME)low (only for development, staging, prod)Targeted removal of data : whole keys (DEL, UNLINK, GETDEL), parts of a value (HDEL, LPOP, SREM, ZREM, XTRIM…), any time to live given to a key or a field (EXPIRE, PEXPIRE, SETEX, SET with EX or PX, the absolute expiries) — the data is gone when it elapses, and one second is a deletion in all but name —, and the moves (RENAME, LMOVE, SMOVE, RPOPLPUSH), which take a key or an element out of its source. Through the dedicated `del`, `expire` and `set` tools or the generic `execute` tool. Costly to reverse if the data is not backed up elsewhere. May break application state. A cache write with a time to live therefore needs this permission next to `write-data`.
upstash-redis.flush-databaseFLUSHDB / FLUSHALL — mass data deletion via the execute toolhigh (only for development, staging, prod)FLUSHDB / FLUSHALL wipes all keys in the database. Irreversible without a backup. Only reachable via the generic `execute` tool (not exposed as a dedicated tool). Presets ask first outside development.
upstash-redis.execute-arbitraryGeneric execute — scripts, administration and any uncategorized Redis commandmedium (only for development, staging, prod)The `execute` tool can run any Redis command. A command that is not a known read, write, deletion or flush falls into this catch-all : scripts and functions (EVAL, FCALL), server administration (CONFIG, ACL), transaction control, and any command the gateway does not know or cannot read. A script can delete or flush the database, so holding this permission allows everything a Redis command can do. Presets ask first outside development.
upstash-redis.create-databaseCreate a new database (Management API)mediumCreates a new Redis database in the Upstash account. Reversible (can delete it). May incur costs if the account has a paid plan. Account-rooted : the new database is not a mission resource yet.
upstash-redis.delete-databaseDelete an entire database (Management API)high (only for development, staging, prod)Permanently deletes a Redis database and all its data. Irreversible without a backup. Equivalent to dropping a production data store. Presets ask first in every environment.
upstash-redis.modify-databaseRename database (Management API)medium (only for development, staging, prod)Modifies database metadata (currently: rename). Rename can break any downstream reference that uses the old name. Classified as credentials touch because it affects the database identity. Presets ask first in every environment (configuration change).
upstash-redis.read-statsRead usage statisticslowRead-only access to database usage statistics (commands processed, memory usage, throughput). No data or credential exposure.
upstash-redis.uncategorized-writeUncategorized Upstash Redis writemedium (only for development, staging, prod; the catch-all: touched only by a call no other permission covers)Catch-all for writes that have not been explicitly categorised. If observed in production, signals that a tool was added without a matching catalog entry — the mission creator must opt in explicitly (no implicit accept). Never carried by a preset.

Presets

A preset pre-fills the permissions of a mission for one account, with a limit per period, a rate and whether each permission runs freely or asks the mission creator first. The person creating the mission adjusts it; the mission stores the explicit list.

Read-only

read-only — Inspect databases, usage statistics and key-value data on the selected databases; no write.

PermissionWhat it allowsLimit per periodRateRuns
upstash-redis.read-database-metadataRead database list / details / stats (Management API reads)2000120 per minuteruns freely
upstash-redis.read-statsRead usage statistics50030 per minuteruns freely
upstash-redis.read-dataRead Redis data (GET, KEYS, SCAN, HGETALL, LRANGE, SMEMBERS, TTL, DBSIZE)5000120 per minuteruns freely

Developer

developer — Key-level reads and writes (with TTL) and targeted deletions on development and staging databases; no FLUSH, no arbitrary command, no database management.

PermissionWhat it allowsLimit per periodRateRuns
upstash-redis.read-database-metadataRead database list / details / stats (Management API reads)5000120 per minuteruns freely
upstash-redis.read-statsRead usage statistics100060 per minuteruns freely
upstash-redis.read-dataRead Redis data (GET, KEYS, SCAN, HGETALL, LRANGE, SMEMBERS, TTL, DBSIZE)10000120 per minuteruns freely
upstash-redis[development].write-data5000120 per minuteruns freely
upstash-redis[staging].write-data200060 per minuteruns freely
upstash-redis[development].delete-data100060 per minuteruns freely
upstash-redis[staging].delete-data50030 per minuteruns freely

Operator

operator — Everything a developer can do plus production key writes, FLUSH, arbitrary commands and database management — production deletions, FLUSH and arbitrary commands outside development, every database deletion and every configuration change asking first.

PermissionWhat it allowsLimit per periodRateRuns
upstash-redis.read-database-metadataRead database list / details / stats (Management API reads)5000120 per minuteruns freely
upstash-redis.read-statsRead usage statistics100060 per minuteruns freely
upstash-redis.read-dataRead Redis data (GET, KEYS, SCAN, HGETALL, LRANGE, SMEMBERS, TTL, DBSIZE)10000120 per minuteruns freely
upstash-redis[development].write-data5000120 per minuteruns freely
upstash-redis[staging].write-data200060 per minuteruns freely
upstash-redis[prod].write-data50030 per minuteruns freely
upstash-redis[development].delete-data100060 per minuteruns freely
upstash-redis[staging].delete-data50030 per minuteruns freely
upstash-redis[prod].delete-data10010 per minuteask me first
upstash-redis[development].flush-database505 per minuteruns freely
upstash-redis[staging].flush-database202 per minuteask me first
upstash-redis[prod].flush-database51 per minuteask me first
upstash-redis[development].execute-arbitrary50030 per minuteruns freely
upstash-redis[staging].execute-arbitrary20020 per minuteask me first
upstash-redis[prod].execute-arbitrary505 per minuteask me first
upstash-redis.create-databaseCreate a new database (Management API)102 per minuteruns freely
upstash-redis[development].delete-database51 per minuteask me first
upstash-redis[staging].delete-database51 per minuteask me first
upstash-redis[prod].delete-database21 per minuteask me first
upstash-redis[development].modify-database102 per minuteask me first
upstash-redis[staging].modify-database102 per minuteask me first
upstash-redis[prod].modify-database51 per minuteask me first

Tools

ToolWhat it does
upstash_redis__list_databasesList databases
upstash_redis__get_databaseRead a database
upstash_redis__create_databaseCreate a database
upstash_redis__delete_databaseDelete a database
upstash_redis__rename_databaseRename a database
upstash_redis__get_database_statsRead the usage of a database
upstash_redis__executeRun a Redis command
upstash_redis__getRead a key
upstash_redis__setSet a key
upstash_redis__delDelete keys
upstash_redis__keysFind keys by pattern
upstash_redis__scanScan the keys
upstash_redis__ttlRead the time to live of a key
upstash_redis__expireSet the expiry of a key
upstash_redis__hsetSet fields of a hash
upstash_redis__hgetallRead a hash
upstash_redis__lpushPrepend values to a list
upstash_redis__lrangeRead a range of a list
upstash_redis__saddAdd members to a set
upstash_redis__smembersRead the members of a set
upstash_redis__dbsizeCount the keys of a database

Health

Health: not enough reports yet. A plugin version is deemed validated by the community with at least 200 reports and 90 % of them successful, over the last 90 days, as reported by the instances whose operators turned community telemetry on. It is a community signal, not a security guarantee.

Last changed 2026-10-16. This page as Markdown: /plugins/upstash-redis.md