-
More flexible database deduplication:
slackdump tools dedupenow supports-mode message-key, which collapses messages by channel and timestamp. This is useful after merging exports where Slack regenerated volatile JSON fields. It remains opt-in: it keeps the latest row and can discard older edited or reaction variants with the same timestamp. -
Codex MCP project scaffolding:
slackdump mcp -new codex <directory>creates a project-scoped.codex/config.tomland bundled Slackdump skills. The Copilot scaffold and documentation now use VS Code's.mcp.jsonandmcpServersconfiguration format. -
Viewer landing preference: the live viewer now offers a Settings control to open conversations at the oldest message (the default) or the latest message, plus a one-time Jump to latest action. The preference is stored in browser local storage and never changes the archive or static HTML output.
The security fixes in this release were informed by a security report compiled by Cornelius Roemer. We thank Cornelius for the analysis that served as the basis for this work.
-
Viewer host protection:
slackdump viewnow accepts only localhost, loopback hosts, and the host named by-listenby default. If you expose the viewer through a LAN address or reverse proxy, repeat-allow-host <hostname-or-ip>for each expected Host header. -
Safer viewer and static HTML output: viewer responses use security headers, archived Canvas markup is sanitized and sandboxed, and static Canvas attachments are written as sanitized documents.
-
Fail-closed self-update verification:
slackdump tools updatenow requires one valid, unambiguous SHA-256 entry inchecksums.txtbefore it extracts a downloaded release asset. Release publishers must include that file and an entry for every installable asset. -
Export credential warning: when
-export-tokenis used, Slackdump now warns that the token is embedded in file URLs; sharing that export also shares the credential's access. Download error messages also redact URL credentials. -
Go 1.26 is now required to build Slackdump from source.
- Fixed a conversation pipeline shutdown deadlock and ensured cancellation stops queued channel and thread work cleanly.
- Fixed channel timelines so they retain empty thread parents and show the refreshed parent after a direct thread resume.
slackdump tools dedupenow uses index-friendly predicates for non-null keys, preventing very slow preview runs on archives with many duplicate channel-user rows.- Archiving with
-channel-usersnow treats Slack'suser_not_foundresponse as non-fatal and stores de-duplicated channel membership lists. - Export, conversion, and merge workflows now skip Slack
tombstone,hidden_by_limit, andexternalfile records instead of failing. - Updated the Slack Edge bootstrap endpoint to
client.init, improving compatibility with current Slack responses.
-
Faster, more selective resume:
slackdump resumenow supports-skip-complete-threads,-skip-stale-threads <duration>, and-skip-stale-channels <duration>to avoid re-fetching thread or channel entities that are already complete or have gone dormant. Stale filters run before any Slack API calls and exit successfully as a no-op when everything is filtered out. -
Post-resume dedupe:
slackdump resume -deduperuns duplicate cleanup automatically after a successful resume, using the same cleanup logic asslackdump tools dedupe. -
Improved interactive login compatibility: browser-based workspace login now prefers an installed system browser for the interactive "Login in Browser" flow, working around Slack rejecting the bundled Chromium revision. Use
slackdump workspace new -bundled-browserto force the previous bundled browser behaviour. -
Viewer static and interactive polish: the archive viewer now has shared viewer-side JavaScript for side-panel state, active-channel highlighting, connection-status handling, and tab keyboard navigation. Static HTML output also supports user profile panels via anchors, and viewer layout has improved responsive behaviour.
-
Wizard help pager: command wizards now expose a Help menu item backed by a scrollable pager, with centralised key bindings and consistent help styling across TUI components.
-
Replit + Google Drive backup recipe:
contrib/replit_drive_backupcontains a resumable uploader that mirrors a Slackdump archive directory to Google Drive from a Replit workspace.
thread_not_foundis now treated as a non-critical thread fetch result, so stale or deleted threads no longer fail a run.slackdump resume -threads -skip-complete-threadsnow keeps direct thread resume items and applies the complete-thread check after the first successfulconversations.repliespage.- Resume now distinguishes an invalid empty archive from a valid no-op caused by stale filters, and filtering to no results no longer reports an error.
- File download deduplication during resume is now an explicit database controller option instead of depending on the command name.
- Edge client setup is restricted to
xoxc-client tokens, avoiding failures with token types that cannot use Slack Edge APIs. - Fixed several TUI regressions: shared Huh keymap state, config checker pane sizing, boolean toggles, number-key navigation, date picker polish, and scrollable wizard help sizing.
-
slackdump tools merge: merge one or more Slackdump sources (archives, exports, or databases) from the same workspace into an existing database archive. Pass-checkto verify compatibility without modifying the target,-files=falseto skip file attachments, or-avatars=falseto skip user avatars. Merge does not deduplicate — runslackdump tools dedupeon the result if sources overlap. -
slackdump tools cleanup: remove residual rows that belong to unfinished database sessions. Run without flags to preview, add-executeto commit the removal. -
slackdump tools dedupe: remove identical duplicate messages, users, channels, channel users, and files introduced by resume look-back overlap. Run without flags to preview, add-executeto commit. -
-dm-modeflag forslackdump convert: controls how 1:1 DM channels are serialised intodms.jsonduring export conversion.single(default) preserves the historic single-user layout;multiuses the observed IM membership list, which is the correct choice when converting a merged multi-user archive.
- Fixed a regression in user ordering during export conversion.
- Fixed range copy bug, DM member assignment, and SQLite variable limit in migration logic (contributed by Fizmatik).
- Improved FILE-type attachment deduplication matching.
slackdump resumenow returns a clear error when the target database does not exist instead of silently creating an empty one.slackdump resumenow returns a clear error when the target archive contains no sessions.
-
MCP Server (
slackdump mcp): a read-only Model Context Protocol server for querying Slackdump archives with AI agents (Claude, GitHub Copilot, OpenCode, etc.). Supports both stdio and HTTP transports. Available tools:load_source,list_channels,get_channel,list_users,get_messages,get_thread,get_workspace_info, andcommand_help. -
Auto-updater (
slackdump tools update): checks for a newer release on GitHub and optionally installs it. Pass-autoto update without prompts. Marked experimental; supports brew, apt, pacman, and direct binary replacement. -
-fail-hardflag: opt in to hard-failing on non-critical per-channel errors (e.g.not_in_channel,channel_not_found) acrossarchive,export, anddump. By default these errors are skipped and logged. -
-member-onlyinlist channels: the-member-onlyflag is now respected byslackdump list channelsin addition toarchive. -
QR code input size override: the maximum size of the QR code image paste field can be tuned via the
QR_CODE_SIZEenvironment variable for workspaces that produce unusually large QR images.
-
Enterprise channel filtering: fixed incorrect channel filtering that could silently drop channels in Enterprise Grid workspaces.
-
not_in_channelno longer aborts a full-workspace archive; the channel is skipped and the run continues (see also-fail-hardabove). -
IsMemberlogic now falls back to theC-prefix heuristic for channels where the membership field is absent, fixing missing channels in--member-onlyruns.
- New channel type filtering via
--chan-typesand wizard multi-select, wired through list/archive/export/resume flows. - Optional custom profile field labels with
--custom-labels, including UI support; uses a new user profile fetch path. - Channel type constants now align with Slack string values; channel retrieval defaults to all types when none specified.
- Listing commands now report empty results early and expose list sizes; added tests for list length helpers.
- Internal stream/control updates for custom user profile fetching, plus expanded mocks and tests.
- Safer enum String() methods guard against negative values across generated stringers.
- License switch from GPLv3 to AGPLv3.
- Better handling of cancellation in various packages.
- Filenames in Slack Export are dated in the America/Los_Angeles timezone to align with the Slack export format;
- 5x faster conversion to Slack export, when using database backend, compared to the chunk file backend.
- backend for export, archive and dump formats is changed to database;
- archive and search formats is changed to database;
- universal converter to export for any other format.
Gist:
- 2.6x dump speed improvement on channels with threads;
- Support for enterprise workspaces;
- json logging on demand;
- new structured CLI;
- improved TUI for the wizardry with bells and whistles;
- multiple workspaces with ability to switch between them without
-auth-reset; - api limits configuration files;
- uninstallation tool;
- slackdump system information tool;
- pgp encryption for traces (under tools);
- search results archival;
Consider using the new archive command to save your workspace data. You can read about
it in the slackdump help archive command and the format it produces in the
slackdump help chunk command.
Slackdump V3 introduces a viewer for exported data. To view the exported data, run:
slackdump view <export file or directory>
NOTE: search results are not supported by the viewer yet.
-downloadflag renamed to-filesand is set to "true" by default;-rflag that allowed to generate text files was replaced byslackdump formatcommand.
- Completely rewritten CLI, based on
gocommand source code (see Licenses); - Default API limits can be overridden with configuration file (use
-config <file>); - Slack Workspaces:
- Slackdump remembers credentials for multiple Slack Workspaces;
- It is possible to select the "Current" Workspace using the
workspace selectcommand; - The "Current" workspace can be overridden by providing the
-w <name>flag.
- Slackdump
archivemode allows to dump the entire workspace into a directory of chunk files. - Slackdump
convertmode allows to convert chunk files into other formats, such as Slack export format, or Slackdump format.
- Default output location (BASE_LOC environment variable), if not set by the
user, defaults to the ZIP file "slackdump_YYYYMMDD_HHmmSS.zip", where
YYYYMMDDis the current date (for example20221103) andHHmmSSis the current time with seconds (for example185803); - To reset all authentication data (similar to old
-auth-reset), runslackdump workspace delete -a -ywhere-ais for "all" and-yto answer "yes" to all questions; - Flag
-user-cache-filewas removed. - Slackdump does not cache users on each startup, to speed up execution, it
users lazy caching. For example, when the list command is requested. The
user cache behaviour can still be controlled by
-no-user-cacheand-user-cache-retentionflags.
Optionsreorganised, API limits are extracted into a Limits variable. Tier limits are extracted to TierLimits, and are accessible viaLimits.Tier2andLimits.Tier3variables. Requests limits are accessible viaLimits.Request.Session.SetFSmethod is removed, set the filesystem inOptions.Filesystem.- Introduced
Close()interface method onfsadapter.FS.fsadapter.Closeis removed.
./cmd/internal/golangis BSD licensed.- Slackdump is AGPL-3 licensed.