JavaScript SDK 17.6.0
Released on September 17, 2026
Breaking changes
cachingPostFunctionremoved (Node): Replaced bycreateCachingFunction(storage, options?). If you calledcachingPostFunctiondirectly, switch to the new function and delete the old plaintext cache file in your working directory.
Updates
KSM-1209: Added a bounded, configurable request timeout to all network calls (queries, file upload, file download). Set
requestTimeoutMsonSecretManagerOptions(default 30s);downloadFile,downloadThumbnail, anduploadFileeach also accept an optional per-calltimeoutMsthat overrides it. On timeout, the call rejects with aKeeperErrornaming the applied value.KSM-1073: Fixed
pamSettings.connectionmissing thedbConnectionMethodfield onpamDatabaserecords.KSM-1079: Fixed
getFolders()crashing when a folder in the response has a corrupted or missing key; undecryptable folders are now skipped instead.KSM-1084: Fixed
deleteSecret()anddeleteFolder()silently reporting success when the server rejected some UIDs; per-item server error messages now surface to the caller.KSM-748: Fixed
getSecrets()silently dropping records created by Commander or the Vault UI inside shared folders.KSM-1035: Throttle retry jitter is now one-sided (0 to +25%) instead of two-sided, and a server-supplied
retry_afteris capped at 176s.KSM-1128: Bounded the server key-rotation retry in
postQueryto 3 attempts instead of retrying forever; a server-suggested key ID is now validated before being persisted.KSM-1254: Fixed the Node platform's
hash()ignoring itstagparameter.KSM-1332: Fixed browser IndexedDB storage hanging forever on a storage failure instead of rejecting.
KSM-1251: Fixed throttle and key-rotation detection failing to parse a response body over 1000 bytes, which silently disabled the retry for that response.
KSM-1297: Fixed
getSharedFolderUid()hanging forever, and blocking the whole event loop or browser tab, on a cycle in server-supplied folder parent data. It now throws a descriptive error naming the folder where the cycle closes.KSM-1342: Fixed large file downloads (roughly 75MB and up) failing with a spurious timeout, caused by the new request-timeout tracking re-copying the entire response buffer on every network chunk. Chunks are now concatenated once, when the response ends.
KSM-1351: Fixed
hasEncryptedData()andhasReadableData()misclassifying real encrypted data as unencrypted roughly 1 in 128 times. Both now require an actual JSON parse instead of checking only the first decoded character.KSM-1395: Fixed throttle retry never firing against the live backend: the retry gate checked only for HTTP 403, but the backend has returned 429 for a throttled Secrets Manager request since 2026-06-15. The gate now accepts both.
KSM-1265: BREAKING (Node only): Replaced
cachingPostFunction, which stored its cache key in plaintext beside the data it protected, withcreateCachingFunction(storage, options?). The cache is now encrypted with a key derived from the app key, authenticated against tampering, and stored at~/.keeper/ksm-cache.datby default. See Breaking Changes.KSM-1266: Fixed
localConfigStoragesilently treating a corrupt, unreadable, or malformed config file as "no config yet." These cases now throw a typedKeeperStorageError(carrying the filesystem error code when available), and config writes are now atomic.KSM-1267:
getFolders()now classifies why an undecryptable folder was skipped and logs a summary line naming the affected folders. A new optionalonDecryptionErrorcallback onSecretManagerOptionslets callers react to, or fail closed on, a partial result.KSM-1263: Config and cache file permissions are now re-applied on every write, not just on file creation.
KSM-1256, KSM-1255: Fixed a stored
serverPublicKeyIdoutside the bundled key table permanently blocking every future request; it now self-heals to the default key. Stopped re-savingserverPublicKey/serverPublicKeyIdon every call when unchanged, and closed a race where concurrent requests could leave a mismatched key/id pair in storage. A customserverPublicKeynow always requires itsserverPublicKeyIdin the same call.
Resources
Last updated
Was this helpful?

