Skip to content

--due flag accepted but not persisted on todo create/update (due_on stays null) #485

@studiomoccia

Description

@studiomoccia

Summary

--due on both basecamp todo (create) and basecamp todos update is accepted and the command returns ok: true, but the due_on field is not persisted on the to-do. The resulting to-do has due_on: null.

This is high-impact: a to-do silently created without a due date does not surface in reports overdue / reports assigned / schedule views, so deadlines can be missed without any error shown to the user.

Version

$ basecamp version
basecamp version 0.7.2

(latest release at time of report — v0.7.2, 2026-03-26)

Reproduction

# create with a due date
basecamp todo "test due" -p "<PROJECT>" --list <LIST_ID> --due "2026-12-31"
# => {"ok": true, ...}

# verify
basecamp todos list -p "<PROJECT>" --list <LIST_ID> --json | jq '.data[] | {content, due_on}'
# => due_on is null

Same result with basecamp todos update <ID> --due "2026-12-31" (and with -d), and also with natural-language values like --due "tomorrow". The command reports success but due_on stays null.

Expected vs actual

  • Expected: due_on set to the provided date.
  • Actual: due_on remains null; no error or warning.

Note: the binary clearly contains date validation (todo due_on must be in YYYY-MM-DD format), and a valid YYYY-MM-DD value passes without error — so this looks like the parsed flag value is not being included in the API request payload, rather than a validation/format issue.

Workaround

Setting due_on directly via the Basecamp 3 API works:

PUT https://3.basecampapi.com/<ACCOUNT>/buckets/<BUCKET>/todos/<ID>.json
{ "content": "<existing content>", "due_on": "2026-12-31" }

Environment

  • macOS (darwin), arm64
  • basecamp-cli 0.7.2 installed to ~/.local/bin/basecamp

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions