Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Install Taskwarrior from your Linux distribution’s package repository for the simplest setup, or build the current upstream 3.5.0 release when you need that exact version. Then verify the executable, let Taskwarrior create its initial files, inspect the resulting configuration, and run a small add–view–complete workflow.

Taskwarrior’s normal configuration file is ~/.taskrc. Its task data is kept separately, and Taskwarrior 3.5.0 uses a SQLite database named taskchampion.sqlite3. A single-device installation needs no synchronization; if you are upgrading from Taskwarrior 2, follow the migration procedure instead of replacing the old binary in place.

Choose an installation route

There are two sound ways to install Taskwarrior on Linux. A distribution package is quickest and receives updates through your normal package manager, but the repository may provide a version different from the current upstream release. A source build follows the upstream release directly, at the cost of installing build tools and meeting the dependencies listed by that release.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Route Best for Version expectation Trade-off
Distribution package Most users and routine workstation installs Determined by your distribution repository; it may differ from 3.5.0 Fast setup, but release timing and package naming vary
Upstream source build Users who need the upstream 3.5.0 release or repository-independent control Builds the 3.5.0 source archive when you use that release Requires CMake, a compiler, development libraries, and ongoing manual updates

The Taskwarrior download page currently lists version 3.5.0, released on 2026-08-16. Treat that as upstream metadata, not a promise that your distribution has already packaged it. If a specific version matters to scripts or a team standard, check your distribution’s package metadata before installing.

Install on Debian or Ubuntu

Use the package name taskwarrior:

sudo apt-get update
sudo apt-get install taskwarrior

The update step refreshes repository metadata; it does not select an upstream version. After installation, check what was actually installed:

task --version

Install on Fedora

Fedora’s package is commonly named task:

sudo dnf install task
task --version

Install on Arch Linux

Install the task package with pacman:

sudo pacman -S task
task --version

Install on openSUSE

openSUSE uses the package name taskwarrior:

sudo zypper install taskwarrior
task --version

If your command reports that no package exists, confirm the distribution release, enabled repositories, and the package name shown by your package manager. Linux packages are often named task, even though the project and executable are called Taskwarrior.

Build Taskwarrior 3.5.0 from source

Use a source build when the repository version is unsuitable or you need the upstream release directly. The release instructions are authoritative for dependencies; the getting-started documentation specifically calls out the UUID development library, often packaged as libuuid-dev or uuid-dev on Debian-family systems. Package names for CMake, the compiler, and other development libraries differ by distribution, so install the requirements named in the release’s INSTALL file before configuring.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

After downloading the task-3.5.0.tar.gz archive, run the upstream build sequence:

  1. Extract the archive:
    tar xzvf task-3.5.0.tar.gz
  2. Enter the source directory:
    cd task-3.5.0
  3. Generate a release build directory with CMake:
    cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
  4. Compile the program:
    cmake --build build
  5. Install it system-wide:
    sudo cmake --install build

Confirm that the installed executable is on your shell’s PATH and identify which copy is being run:

command -v task
task --version

If command -v task points to an older distribution package, your shell is not using the source-built executable. Resolve the PATH order before configuring Taskwarrior, otherwise you may edit one installation’s files while invoking another.

Complete the first run

On its first invocation, Taskwarrior looks for configuration and task data. If it cannot find them, it asks whether it may create them. Approve creation for a normal personal installation. The minimal configuration consists of one setting:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
data.location=~/.task

Other settings have defaults, so do not copy a large configuration file before you know which behavior you want to change. Keeping the initial state small makes version changes and troubleshooting easier.

Understand the standard locations

  • ~/.taskrc is the normal user configuration file.
  • ~/.task is the default task-data directory when data.location is set as above.
  • Taskwarrior 3.5.0 stores its database as taskchampion.sqlite3 inside the task-data directory.
  • If ~/.taskrc does not exist, Taskwarrior also checks for $XDG_CONFIG_HOME/task/taskrc.
  • The TASKRC environment variable selects an alternate configuration file.
  • The TASKDATA environment variable changes the task-data directory.

These variables are useful for separate profiles, testing, or a deliberately managed home directory. They also explain why two shells can appear to use different task lists: compare TASKRC, TASKDATA, and XDG_CONFIG_HOME before changing files.

Inspect settings before changing them

Run:

task show

This displays the effective settings and checks for unrecognized setting names. An unknown-setting warning usually means a typo or an option removed in your installed version. Fix the name rather than suppressing the warning.

To persist an override, use:

task config name value

Replace name and value with the setting you intend to change. To remove a persisted override and return to the built-in default, omit the value:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
task config name

Removing an override is not the same as storing an empty value. An empty value is a deliberate setting and can have different behavior, so use it only when the option’s documentation says an empty value is meaningful.

Use one-command overrides for experiments

For a temporary change that should not be written to ~/.taskrc, prefix the command with an rc. override:

task rc.name=value ...

This is useful for testing a setting, operating on an alternate data location, or diagnosing a configuration problem without editing the permanent file. Once the command exits, the temporary override is gone.

Configure only what you need

After confirming the defaults, add settings gradually. Common early customizations include selecting a preferred editor, including a theme fragment, and defining project defaults. Use the project’s documented setting names with task config, then run task show to verify the effective result.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Theme files and other configuration fragments can be included from the main configuration, which lets you keep a small personal file and separate visual or shared settings. Keep a copy of ~/.taskrc before making a series of edits; the task database and configuration are separate, so backing up only one does not protect the other.

Check the effective data directory

If commands show an unexpected task list, inspect the settings rather than creating another list by accident:

task show | grep -E 'data.location|rc|taskdata'

The exact display formatting can vary, so the important check is whether the effective configuration points to the directory you expect. Also inspect the environment variables described above. A shell startup file that exports TASKDATA can override what you thought was the default.

Run a safe smoke test

The quickest functional test is to create one disposable task, display it, complete it, and confirm the default report. Run these commands from the same account that will own your real task list:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Add a clearly disposable item:
    task add Test Taskwarrior installation
  2. Display pending tasks with the explicit next report:
    task next
  3. Read the identifier printed for the new task. It may be a numeric ID in the report. Substitute that identifier for <ID> and mark the item complete:
    task <ID> done
  4. Run Taskwarrior without a command:
    task

The project tutorial notes that next is the default report, so the final command should show your remaining actionable tasks. Because the test item is completed, it should not remain in that pending view. If you prefer to remove a test item without completing it, use the delete action for its printed ID instead; only delete a task you know is disposable.

What a successful test proves

  • The shell can find the intended task executable.
  • Taskwarrior can read or create its configuration.
  • The configured data directory is writable by your user.
  • The database can accept a new record and update its status.
  • The reporting command can read the resulting data.

This test does not configure synchronization, backups, recurring task policy, or a team workflow. Those are separate decisions and should not be introduced until local operation is working.

Understand Taskwarrior 3 storage

Taskwarrior 3.5.0 uses the TaskChampion database file taskchampion.sqlite3 in the task-data directory. It is not a collection of the old Taskwarrior 2 record files. Protect the entire task-data directory, including the database and any related files, when making a backup.

Do not place that directory under ordinary file synchronization. The project warns that tools such as Syncthing and rsync can appear to work while causing database corruption, and this usage is unsupported. A copied database is not a safe substitute for a documented synchronization protocol.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Upgrade from Taskwarrior 2 safely

A Taskwarrior 2 to 3 upgrade is a data migration, not a simple in-place binary replacement. Version 2 stored task records in .data files, while version 3 stores them in taskchampion.sqlite3. Version 3 also changed synchronization behavior.

Prepare a rollback

  1. Stop using the old installation while you prepare the migration so new changes are not split between two data sets.
  2. Make a complete backup of the Taskwarrior 2 configuration and data directories. Keep the backup somewhere outside the directory you will import.
  3. Record the old executable version and any synchronization arrangement, especially whether the old installation used taskd.
  4. Install Taskwarrior 3.3.0 or later. The current upstream release, 3.5.0, satisfies that minimum.

Import the old records

Run the version-3 import command with hooks disabled for that invocation:

task import-v2 rc.hooks=0

Disabling hooks prevents old automation from running unexpectedly during conversion. Read the current upgrade instructions for the release you install, follow any prompts, and verify the imported task count and representative tasks before deleting the backup.

Plan for the synchronization change

Taskwarrior 3 does not interface with the old taskd synchronization system. If your Taskwarrior 2 setup depended on taskd, do not assume that installing version 3 preserves that service. Decide on a supported version-3 synchronization method before treating the migration as complete, and keep the version-2 backup until the new workflow has been tested on every device.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Set up synchronization only when necessary

A single-device user can work indefinitely without synchronization. For multiple replicas, Taskwarrior documents the task sync command and supports either a cloud-storage provider or a TaskChampion sync server.

Synchronization is a two-sided operation. In general, a change must be synchronized on the device where it was made and synchronized again on the destination before that destination receives it. Plan for both steps when testing a new device; seeing a successful sync on one machine does not prove that another replica has received the change.

Never synchronize the database directory directly

Do not point Syncthing, rsync, or a similar generic file-copy utility at the directory containing taskchampion.sqlite3. Concurrent or partial file operations can corrupt the database, and this arrangement is unsupported. Use a documented provider or TaskChampion sync server through Taskwarrior’s own synchronization commands.

Troubleshoot common installation problems

task is not found

Check the package installation result and your path:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
command -v task
task --version

For a source build, verify that sudo cmake --install build completed and that its installation directory is on PATH. If another path appears first, adjust the shell’s path or remove the unintended older package before continuing.

The installed version is not 3.5.0

This usually means your distribution repository supplies a different release. That is normal. Decide whether the repository version meets your needs; if an exact upstream version is required, use the source-build route and verify the resulting executable with task --version.

Taskwarrior asks to create files every time

Inspect ~/.taskrc, the TASKRC variable, and XDG_CONFIG_HOME. You may be launching Taskwarrior with a different configuration path in each shell. Then run task show and confirm that data.location points to a writable directory.

Settings are ignored or reported as unknown

Run task show and compare each setting name with the documentation for your installed version. Remove obsolete or misspelled overrides with task config name. Remember that a temporary rc.name=value override affects only the command on which it appears.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The task list is unexpectedly empty

Do not immediately add replacement tasks. First compare the effective configuration and environment variables with the location used by your previous installation. A different TASKDATA, TASKRC, or XDG path can select a separate, perfectly valid database.

A practical post-install checklist

  • Run task --version and record the installed version.
  • Run task show and confirm the configuration file and data location.
  • Confirm that taskchampion.sqlite3 is inside the intended task-data directory for version 3.
  • Complete the disposable add–next–done test and remove any test item you did not complete.
  • Back up both the configuration and task-data directory before importing old data or changing synchronization.
  • If migrating from version 2, use task import-v2 rc.hooks=0 and retain the old backup until verification is finished.
  • If using more than one device, choose a documented synchronization provider or TaskChampion server; never synchronize the database directory with generic file-sync tools.

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.