gtasks: A CLI Tool for Google Tasks

Refer to the docs website to read about available commands.
GTasks includes an embedded Agent Skill that can be installed for supported AI agents.
Supported targets:
- Claude Code via ~/.claude/skills/gtasks-cli/
- Codex-compatible agents via ~/.agents/skills/gtasks-cli/
- OpenClaw via ~/.openclaw/skills/gtasks-cli/
Commands:
gtasks skills status
gtasks skills install
gtasks skills install --agent codex
gtasks skills uninstall --agent codex
For contributors: the canonical skill files live in internal/skills/assets/gtasks-cli/.
macOS / Linux (recommended):
curl -fsSL https://gtasks.sidv.dev/install | bash
Installs to ~/.local/bin by default. Override with INSTALL_DIR:
INSTALL_DIR=/usr/local/bin curl -fsSL https://gtasks.sidv.dev/install | bash
Manual install: Download the binary for your system from releases, move it to a directory in your PATH, and chmod +x gtasks.
Go install:
go install github.com/BRO3886/gtasks@latest
git clone https://github.com/BRO3886/gtasks
cd gtasks
# Development build
make dev
# Development build with embedded credentials from .env
make dev EMBED_CREDS=1
# Build for specific platforms
make linux # Linux (amd64 + arm64)
make windows # Windows (amd64)
make mac # macOS (amd64 + arm64)
# Build for all platforms
make all
# Create release packages
make release
To use GTasks, you need to set up Google OAuth2 credentials:
Create OAuth2 credentials:
Application type: "Web application"
Add authorized redirect URIs:
http://localhost:8080/callbackhttp://localhost:8081/callbackhttp://localhost:8082/callbackhttp://localhost:9090/callbackhttp://localhost:9091/callbackSupply credentials via environment variables:
export GTASKS_CLIENT_ID="your-client-id.apps.googleusercontent.com"
export GTASKS_CLIENT_SECRET="your-client-secret"
Or add them to ~/.config/gtasks/config.toml (persistent, no shell profile changes needed):
[credentials]
client_id = "your-client-id.apps.googleusercontent.com"
client_secret = "your-client-secret"
When building from source, you can also pass credentials at build time:
make dev EMBED_CREDS=1 # reads GTASKS_CLIENT_ID/SECRET from .env
GTasks stores authentication tokens and the optional config file in the same directory. Discovery order (first existing directory wins):
$XDG_CONFIG_HOME/gtasks/ — XDG standard path; XDG_CONFIG_HOME defaults to ~/.config~/.gtasks/ — legacy path, used automatically when that directory already existsNew installations use ~/.config/gtasks/ by default.
Files stored:
| File | Purpose |
|---|---|
token.json |
OAuth2 token (created on gtasks login) |
config.toml |
Optional configuration file (created manually) |
See the Configuration docs for the full config file reference.
Usage:
gtasks [command]
Available Commands:
help Help about any command
login Logging into Google Tasks
tasklists View and create tasklists for currently signed-in account
tasks View, create, list and delete tasks in a tasklist
Flags:
-h, --help help for gtasks
-t, --toggle Help message for toggle
Use "gtasks [command] --help" for more information about a command.
gtasks <COMMAND> help
gtasks login
gtasks logout
gtasks tasklists view
gtasks tasklists add -t 'title'
gtasks tasklists add --title 'title'
gtasks tasklists rm
gtasks tasks -l <title> subcommand [--subcommand-flags]
Examples:
gtasks tasks [--tasklist|-l] "DSC VIT" view [--include-completed | -i]
Note: If the -l flag is not provided you will be able to choose a tasklist from the prompt
gtasks tasks view
gtasks tasks view -i
gtasks tasks view --include-completed
gtasks tasks view ... --sort [due,title,position, default=position]
gtasks tasks view --max 10 # Show only first 10 tasks
gtasks tasks add
# Create 5 daily tasks starting from Feb 10
gtasks tasks add -t "Standup" -d "2025-02-10" --repeat daily --repeat-count 5
# Create weekly tasks until March 10
gtasks tasks add -t "Weekly sync" -d "2025-02-10" --repeat weekly --repeat-until "2025-03-10"
Repeat patterns: daily, weekly, monthly, yearly
gtasks tasks done
gtasks tasks undo
gtasks tasks clear
gtasks tasks clear --force # Skip confirmation
gtasks tasks info [task-number]
# Interactive mode - shows current values and prompts for changes
gtasks tasks update [task-number]
# Flag mode - update specific fields
gtasks tasks update 1 --title "New title"
gtasks tasks update 1 --note "Updated note" --due "tomorrow"
gtasks tasks rm
Made with :coffee: & Cobra
$ claude mcp add gtasks \
-- python -m otcore.mcp_server <graph>