Install Taskwarrior from your Linux distribution when you want the simplest setup, or build the upstream 3.5.0 release when you need that specific version. After installation, verify the executable, let the first-run prompt create the standard files, inspect the resulting configuration, and run a small add–view–complete workflow. A Taskwarrior 2 installation needs a separate migration because version 3 changed its storage format and no longer uses the old taskd synchronization system.
Taskwarrior’s official getting-started documentation describes it plainly: “Taskwarrior manages your task list from your command line.” The commands below take you from an empty shell to a working local task list without setting up synchronization unless you actually need multiple devices.
As an Amazon Associate I earn from qualifying purchases.
Choose an installation route
There are two sensible ways to install Taskwarrior on Linux. A distribution package is quickest and automatically uses your system’s package-management conventions. A source build follows the upstream release directly but requires a compiler, CMake, and the dependencies listed by that release.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →| Route | Best for | What to expect |
|---|---|---|
| Distribution package | Most users and single-machine setups | One command, integrated updates, and a version selected by your distribution. The package name and version can differ between distributions and releases. |
| Upstream source build | Users who need a particular upstream release or whose repository is older | Build Taskwarrior 3.5.0 yourself with CMake, install it, and ensure the resulting executable is on PATH. |
The official download page currently lists Taskwarrior 3.5.0, released on 2026-08-16. That is upstream metadata, not a promise that your distribution ships the same build. If the exact version matters, inspect the package metadata offered by your distribution before installing.
#1 Best Overall
Install the distribution package
Use the command for your distribution. Run it in a terminal account that can use sudo; your package manager may ask for your password and confirmation.
Debian or Ubuntu
sudo apt-get install taskwarrior
Debian-family repositories may carry a release older or newer than the upstream listing. If you need a particular version, check the candidate and available versions in your configured repositories before accepting the transaction.
Fedora
sudo dnf install task
Fedora commonly uses the short package name task, even though the command you run afterward is also task.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteArch Linux
sudo pacman -S task
Allow the package manager to resolve its normal dependencies. The repository version follows Arch’s packaging schedule rather than the date of the upstream 3.5.0 release.
openSUSE
sudo zypper install taskwarrior
As with the other distributions, the repository’s package metadata is authoritative for the version that will actually be installed.
Build Taskwarrior 3.5.0 from source
Choose a source build when you deliberately want the upstream release listed as 3.5.0 or when your distribution does not provide a suitable package. Download the task-3.5.0.tar.gz release archive from the project, then run the following commands from the directory containing it:
-
Extract the archive:
tar xzvf task-3.5.0.tar.gz -
Enter the extracted source directory:
cd task-3.5.0 -
Configure a separate release build directory with CMake:
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsSpecial offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -
Compile the project:
cmake --build build -
Install the compiled program:
sudo cmake --install build
The release’s INSTALL instructions define the current compiler and library requirements. The getting-started documentation specifically calls out the UUID development library for source builds; depending on the distribution, the package is named libuuid-dev or uuid-dev. Install the name used by your distribution before rerunning CMake if configuration reports that UUID headers or libraries are missing.
After installation, confirm that the directory containing the new executable is on your shell’s PATH. If your shell still finds an older system copy, inspect your path order and start a new shell after changing it. Do not delete the distribution copy until you have confirmed which executable you intend to maintain.
Verify the executable and version
Run:
task --version
A package installation may print a distribution-maintained version, while a source installation should identify the upstream release you built. A mismatch with 3.5.0 is not automatically an error: it usually means your repository has chosen a different package version. Decide whether that version meets your needs before replacing it with a source build.
If the shell reports that task cannot be found, the installation either failed or the executable is not on PATH. Recheck the package transaction or the source-build install step, then open a new shell and run the version command again. Keep one known-good executable on the path while troubleshooting so that configuration files are not tested against an unintended binary.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Understand the first run
Taskwarrior normally reads user configuration from ~/.taskrc and stores task data under ~/.task. When it cannot find configuration or task data, the first invocation asks whether it may create them. Answering yes lets Taskwarrior create the normal files and directories; declining leaves you to provide them yourself.
The minimal configuration is only:
data.location=~/.task
Other settings have defaults, so avoid copying a large configuration from an unrelated machine during first setup. Start with the generated files, verify that commands work, and add settings one at a time.
Know where configuration and data come from
Taskwarrior can be redirected without editing the default files. These variables and command-line forms are useful when testing, scripting, or keeping separate task collections:
TASKRCselects an alternate configuration file.TASKDATAchanges the task-data directory.- If
~/.taskrcdoes not exist, Taskwarrior checks$XDG_CONFIG_HOME/task/taskrc. - A one-command override uses the form
task rc.name=value ...; it affects that invocation rather than permanently changing the file.
Taskwarrior 3.5.0 stores its local database as taskchampion.sqlite3 inside the task-data directory. Treat that database as an application-managed file, not as a text export that can be edited safely by hand.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Understand configuration precedence
When a command appears to use the wrong settings, identify which layer supplied each value. The normal user file is ~/.taskrc. If it is absent, Taskwarrior checks $XDG_CONFIG_HOME/task/taskrc. An explicitly set TASKRC points to a different configuration file, while TASKDATA redirects the data directory. Finally, an rc.name=value argument applies an override only to that command invocation.
This precedence explains why a setting can appear to “revert” when you open a new terminal: a temporary rc. override was never written to disk. It also explains why two shells can show different task lists if their environment variables point to different locations. Use task show in the same shell where a problem occurs, and compare the environment and selected files before changing anything.
Inspect and change settings safely
Use task show to see the effective settings. It also checks for unrecognized settings, so it can expose a misspelled option or an obsolete setting copied from an older configuration.
Persist a setting with:
task config name value
Replace name and value with the setting you intend to store. The command writes an override to the active configuration file. To remove an override and return that setting to its default, omit the value:
task config name
Removing an override is different from assigning an empty value. An empty value is still an explicit setting and may have a different meaning from the default, so use the form that matches your intent.
Early configuration usually needs only choices you understand, such as a preferred editor, a theme include, or project defaults. The official manual documents include files for themes and other configuration fragments; add those after the basic installation works and check the result with task show.
Run a disposable smoke test
The fastest end-to-end check is to create one temporary task, display it, complete it, and confirm that the list is clean. Run these commands in order:
-
Create a test item:
task add Test Taskwarrior installationTaskwarrior prints an identifier for the new task. Save that identifier for the next command.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
Display pending tasks:
task nextThe
nextreport shows the item you just created. When you run Taskwarrior without an explicit command,nextis the default report. -
Complete the test item, replacing
<ID>with the identifier printed during creation:task <ID> done -
Display the remaining task list:
task
Use a disposable description rather than a real deadline or project. Completing it keeps tutorial data out of your working list; deleting a disposable item is also possible if you prefer not to retain completed history.
What a successful local setup looks like
A clean first installation has four observable properties. First, task --version returns a version and does not resolve to an unintended older executable. Second, the active configuration points to the data location you expect, normally ~/.task. Third, task show reports effective settings without unknown-option warnings. Fourth, the add, next, complete, and default-report commands all operate on the same list.
Check these properties before adding themes, custom reports, hooks, or synchronization. Keeping the first state simple makes later problems easier to isolate: if a newly added include or environment variable changes behavior, you know exactly which change introduced it.
Move from Taskwarrior 2 to Taskwarrior 3
Do not treat this as a simple in-place binary replacement. Version 2 and version 3 use different storage and synchronization assumptions:
| Area | Taskwarrior 2 | Taskwarrior 3 |
|---|---|---|
| Local records | Task records in .data files |
SQLite database named taskchampion.sqlite3 in the task-data directory |
| Synchronization | Could use the older taskd system |
Does not interface with taskd; use a supported version-3 approach instead |
| Upgrade action | Existing files remain in the version-2 format | Import the old data into the version-3 database |
Make a separate backup of your Taskwarrior 2 configuration and data before installing or importing anything. Preserve the backup until you have opened the imported list and confirmed that important tasks, projects, tags, dates, and completion states are present.
Rank #4
The official upgrade guidance requires Taskwarrior 3.3.0 or later for the import procedure. With the version-2 data available to the version-3 executable, run:
Free tools Windows power users keep installed
One-click scans. No signup required.
task import-v2 rc.hooks=0
The rc.hooks=0 override disables hooks for that invocation, as required by the documented import procedure. Run the command in the environment that points to the data you intend to import; check TASKRC, TASKDATA, and task show first if you maintain more than one configuration.
After importing, run the smoke-test reports and inspect representative tasks before removing the old installation or backup. If you previously synchronized through taskd, plan a new synchronization method separately; installing version 3 does not preserve that server protocol.
Add synchronization only when you need it
A single-device user can remain entirely local. Synchronization becomes relevant when the same task list must be available on multiple replicas. Taskwarrior documents two supported directions: a cloud-storage provider or a TaskChampion sync server.
The documented model requires a sync on both ends for a change to travel. After changing a task on the source device, run task sync; then run task sync on the destination device. The exact server or provider setup is a separate decision from installing the command-line client.
Do not place the Taskwarrior 3 database directory under ordinary file synchronization. The documentation specifically warns that tools such as Syncthing or rsync can appear to work while causing database corruption, and this arrangement is unsupported. Synchronize through a documented Taskwarrior/TaskChampion method rather than copying taskchampion.sqlite3 between machines.
Troubleshoot common setup problems
The installed version is not 3.5.0
Distribution repositories select their own package versions. Compare the output of task --version with the version offered by your package metadata. If you require the upstream 3.5.0 release, use the source-build steps and verify that the newly installed executable precedes the packaged one on PATH.
Taskwarrior keeps using an unexpected data directory
Check whether TASKDATA is set and inspect the active configuration with task show. Also check for an alternate file selected by TASKRC, and remember that the XDG configuration path is considered only when ~/.taskrc is absent. A one-command rc.name=value override can also make a test appear different from your persistent configuration.
A setting has no effect or produces a warning
Run task show. An unrecognized setting often indicates a typo or an option removed since an older release. Remove the stale override with task config name, then add the correctly named setting only after confirming it in the current manual.
Recommended Free Tools
The first-run prompt did not appear
The prompt appears only when Taskwarrior cannot find configuration or task data. Existing ~/.taskrc, an XDG taskrc, or an alternate location selected by environment variables can suppress it. Inspect those paths rather than creating a second, competing configuration.
Best Value
A source build fails during configuration
Read the release’s INSTALL instructions for the required compiler, CMake, and libraries. The UUID development package is a known requirement and may be called libuuid-dev or uuid-dev depending on the distribution. After installing the matching development package, rerun the CMake configure command in the existing build directory or recreate that directory if the failed configuration cached incorrect paths.
Migration or synchronization data looks unsafe
Stop and restore your backup rather than experimenting on the only copy. Keep Taskwarrior 3’s SQLite database out of generic file-sync tools, and review the current upgrade instructions before repeating an import or selecting a replacement for taskd.
A reliable order for ongoing maintenance
- Keep the installation route and resulting version documented, especially when a source build and a distribution package coexist.
- Use
task showafter changing configuration so unknown or obsolete options are caught immediately. - Back up configuration and data before a major-version migration.
- Use the built-in reports and commands to work with tasks instead of editing the SQLite database directly.
- Introduce synchronization only after local tasks and configuration are correct, and use a supported sync service rather than file replication.
Quick post-install checklist
- Confirm that
task --versionreports the executable you intended to install. - Confirm that
~/.taskrc, or the selected XDG orTASKRCfile, is the configuration you are actually using. - Confirm that the data directory is the intended location and contains the Taskwarrior 3 database when using version 3.
- Run
task showand resolve every unrecognized-setting warning. - Create and complete one disposable task before importing real data or enabling synchronization.
- For a version-2 upgrade, preserve the backup and use the documented
import-v2 rc.hooks=0procedure with Taskwarrior 3.3.0 or later. - For multiple devices, choose cloud storage or a TaskChampion sync server; never replicate the SQLite directory with Syncthing or
rsync.
Frequently Asked Questions
What is the latest Taskwarrior version for Linux?
The official download page lists Taskwarrior 3.5.0, released on 2026-08-16. Your distribution may provide a different version, so verify with task --version and your package metadata.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Should I install the package or compile Taskwarrior?
Use the distribution package for the simplest setup and integrated updates. Build from source when you specifically need the upstream 3.5.0 release or your repository does not provide a suitable version.
Where does Taskwarrior keep its configuration and data?
The normal configuration file is ~/.taskrc, with task data under ~/.task. TASKRC, TASKDATA, and the XDG path $XDG_CONFIG_HOME/task/taskrc can redirect those locations.
How do I change or reset a Taskwarrior setting?
Run task config name value to persist an override. Run task config name with no value to remove the override and restore the default. An explicitly empty value is different from removing the setting.
Can I synchronize the Taskwarrior database with Syncthing or rsync?
No. Taskwarrior 3 uses an application-managed SQLite database, and generic file synchronization can corrupt it. Use a documented cloud-storage provider or TaskChampion sync server and run task sync on both replicas.
How do I migrate Taskwarrior 2 data?
Back up the old configuration and data, install Taskwarrior 3.3.0 or later, then run task import-v2 rc.hooks=0 in the environment pointing to the old data. Taskwarrior 3 does not use the old taskd protocol, so plan synchronization separately.
Why did the first-run setup prompt not appear?
The prompt is shown only when Taskwarrior cannot find configuration or data. An existing ~/.taskrc, XDG taskrc, TASKRC, or TASKDATA setting can select an already initialized environment.
The Bottom Line
Install the distribution package unless you need a specific upstream release, then verify task --version, keep the initial ~/.taskrc configuration minimal, and complete the disposable smoke test. Treat Taskwarrior 2 migration as a data conversion, and use TaskChampion-supported synchronization rather than copying the Taskwarrior 3 SQLite database with ordinary file-sync tools.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

