{"record":{"id":"13e8053754d70f4d","repo":"clockworklabs/SpacetimeDB","slug":"environment-read-value-exceeds-limit","errorCode":null,"errorMessage":"Environment read value exceeds limit","messagePattern":"Environment read value exceeds limit","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/cli/src/subcommands/env.rs","lineNumber":142,"sourceCode":"    let result = &results[0];\n    let expected: &[&str] = match query {\n        Query::List => &[\"key\", \"value\"],\n        Query::Get(_) => &[\"value\"],\n    };\n    ensure!(\n        result.schema.elements.len() == expected.len()\n            && result.schema.elements.iter().zip(expected).all(|(column, name)| {\n                column.name.as_deref() == Some(*name) && column.algebraic_type == spacetimedb_lib::AlgebraicType::String\n            }),\n        \"Invalid environment read projection\"\n    );\n    ensure!(result.rows.len() <= MAX_ENV_VARS, \"Environment key count exceeds limit\");\n    for row in &result.rows {\n        ensure!(row.len() == expected.len(), \"Invalid environment read row\");\n        if matches!(query, Query::List) {\n            validate_key(&row[0]).context(\"Invalid environment key in response\")?;\n        }\n        ensure!(\n            row.last().unwrap().len() <= MAX_ENV_VALUE_BYTES,\n            \"Environment read value exceeds limit\"\n        );\n    }\n    match query {\n        Query::List => {\n            let mut rows: Vec<_> = result.rows.iter().collect();\n            rows.sort_unstable_by(|a, b| a[0].cmp(&b[0]));\n            let rows = rows.into_iter().map(|row| {\n                Ok::<_, std::convert::Infallible>(spacetimedb_lib::sats::product![row[0].as_str(), row[1].as_str()])\n            });\n            let table = sql::build_table(\n                spacetimedb_lib::sats::satn::PsqlClient::SpacetimeDB,\n                &result.schema,\n                rows,\n            )?;\n            Ok(format!(\"{table}\\n\"))\n        }","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/clockworklabs/SpacetimeDB/blob/eddf9f5014579a50d4b67630e28b6e15cad9c4af/crates/cli/src/subcommands/env.rs#L124-L160","documentation":"Thrown by `render` when an individual environment variable value in the response is longer than `MAX_ENV_VALUE_BYTES`. The CLI enforces the same per-value size cap the server applies on writes, so a value over the limit indicates a policy violation or protocol inconsistency.","triggerScenarios":"`row.last().unwrap().len() > MAX_ENV_VALUE_BYTES` — a stored value exceeds the byte cap, e.g. it was written by an older version before the cap existed, or the value's byte length differs from its character length under the server's counting.","commonSituations":"Very long values (certificates, JSON blobs) stored via older tooling; multi-byte UTF-8 making byte length exceed expectations; server with more permissive limits than the CLI.","solutions":["Identify the offending key and shorten its value, then `spacetime env set KEY <shorter-value>`.","Split large data across multiple variables or store it in the database instead of env vars.","Upgrade the server so writes enforce the same MAX_ENV_VALUE_BYTES cap."],"exampleFix":"// before\nspacetime env set CERT $(cat huge-cert.pem)   # value too large\n// after\nsplit -b 4000 huge-cert.pem part_  # store parts, or reference cert by path","handlingStrategy":"validation","validationCode":"// check value size before `spacetime env set`\nif value.len() > spacetimedb_lib::environment::MAX_ENV_VALUE_BYTES {\n    return Err(\"env value too large\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Check byte length (not char count) of values before setting them.","Keep secrets/certs out of env vars; store references instead.","Enforce the value cap in automation scripts."],"tags":["cli","spacetimedb","limits","environment"],"backgroundTag":"value-out-of-range","analyzedSha":"eddf9f5014579a50d4b67630e28b6e15cad9c4af","analyzedAt":"2026-09-20T12:15:59.611Z","contentChangedAt":"2026-09-20T12:15:59.611Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}