MOVED, which the connector reports as bad_request.
Tools
Safety
- Read-only by default, enforced in the client. Redis has no read-only transaction, so every read tool sends only commands from a fixed allowlist (
GET,SCAN,TYPE,XRANGE,INFO, …). Anything else, includingKEYS,FLUSHDB,EVALand every write, is refused before a byte is sent. Scan Keys walks the keyspace withSCANand never callsKEYS, so it cannot block the server. - Enforced by Redis too, with an ACL user. Connect with a user that holds read commands only (below). Then even a write tool on a
read_writeconnection getspermission_deniedfrom Redis itself. Test Connection warns when the user can run write commands. - Limits on every call. Calls time out after 15 s (up to 55 s with
timeout_seconds). Results stop at 500 keys, fields, items or entries (up to 5,000 withmax_rows) and 1 MB, and each value is cut at 64 KB. A cut result hastruncated: true. Scan Keys also stops after 1,000SCANcalls. - Writes are separate tools. Set, Delete and Expire only run on a connection stored with mode
read_write, and every call returns aconfirm_tokenfirst that the agent must show you and send back. Delete takes key names, never a pattern. - No secrets in results. Passwords and connection strings are removed from every error message. SlowLog redacts every argument after
AUTH,ACL SETUSERpassword rules andCONFIG SETpassword values. - Values are safe to read. Text comes back as UTF-8; binary values come back as
{"encoding": "base64", "data": "..."}.
Create a read-only ACL user
On Redis 6 and later (and Valkey), create a user that can read and nothing else:ACL SAVE (or CONFIG REWRITE) if your server keeps users in a file. Narrow ~* to a key prefix such as ~app:* to limit what agents see. Managed services have their own screens for this: ElastiCache and MemoryDB use user groups with an access string (the part after the password above), Redis Cloud uses roles with ACL rules, and Upstash offers a read-only token.
Test Connection reports write_access: "unknown" for this user: the check uses ACL DRYRUN, which needs @admin, and a read-only user should not hold it.
Connect
Open Redis in the dashboard’s tool catalog and click Connect, or let the agent callstore_credential. Fill in host, port, user (leave it empty for the default user), password and database index, or paste a redis:// or rediss:// URL as the connection string. Mode stays Read only unless you want Set, Delete and Expire to work.
TLS is on by default for a public host and verifies the certificate against the public CAs. Paste your provider’s CA certificate when it uses its own (Redis Cloud does), or pick On, skip certificate check to encrypt without verifying. A rediss:// URL turns TLS on and redis:// turns it off.
How Danube reaches Redis depends on where it lives:
- Public endpoint
- Private network, SSH bastion
- Private network, data-plane agent
Services with a public endpoint (Upstash, Redis Cloud, a server with a public address) connect directly with TLS. Allow Danube’s egress addresses in the firewall or security group: see Connect your production database safely.
auth_required), the network (connection_error, destination_blocked) or TLS (tls_error). A TLS handshake that gets no answer usually means the server listens without TLS.
Example prompts
- “How much memory is Redis using, and has it evicted any keys today?”
- “Find the
session:*keys that never expire.” - “Is the
billingconsumer group on theeventsstream falling behind? How many entries are pending?” - “Show me the last 20 entries of the
ordersstream.” - “What are the slowest commands in the slow log right now?”
- “What’s stored in the
order:1234hash?”
