Note: These ticket contents were written by AI, but I experienced the problem as a human and couldn't find my own workaround.
acli jira workitem create --from-json accepts custom field values via the additionalAttributes key, and this works correctly. The equivalent acli jira workitem edit --from-json rejects every shape of custom-field payload I have tried, making it impossible to update custom fields on existing tickets via acli. This forces users to fall back to the web UI or to call the REST API directly with curl, defeating the purpose of having a CLI for scripted ticket maintenance.
acli jira workitem edit --from-json <payload> should accept the same additionalAttributes shape as create --from-json, allowing custom field values (e.g. Acceptance Criteria, Story Points, Epic Link) to be updated on existing work items.
The Go JSON decoder rejects custom-field payloads with json: unknown field "<key>". The advertised edit schema (visible via acli jira workitem edit --generate-json) is a strict subset of the create schema and contains only:
issuessummarytypedescriptionassigneelabelsToAddlabelsToRemovecustomfield_NNNNN).acli edit --from-json. Every wrapper I tried fails the same way:additionalAttributes (works on create, fails on edit)$ cat payload-1.json
{
"issues": ["ABC-12345"],
"additionalAttributes": {
"customfield_12345": { "type": "doc", "version": 1, "content": [ ... ] }
}
}
$ acli jira workitem edit --from-json payload-1.json --yes
✗ Error: json: unknown field "additionalAttributes"customfield_NNNNN at the top level$ cat payload-2.json
{
"issues": ["ABC-12345"],
"customfield_12345": { "type": "doc", "version": 1, "content": [ ... ] }
}
$ acli jira workitem edit --from-json payload-2.json --yes
✗ Error: json: unknown field "customfield_10966"fields wrapper (the underlying REST API shape)$ cat payload-3.json
{
"issues": ["ABC-12345"],
"fields": {
"customfield_12345": { "type": "doc", "version": 1, "content": [ ... ] }
}
}
$ acli jira workitem edit --from-json payload-3.json --yes
✗ Error: json: unknown field "fields"customFields wrapper$ cat payload-4.json
{
"issues": ["ABC-12345"],
"customFields": {
"customfield_12345": { "type": "doc", "version": 1, "content": [ ... ] }
}
}
$ acli jira workitem edit --from-json payload-4.json --yes
✗ Error: json: unknown field "customFields"$ cat payload-5.json
{
"issues": ["ABC-12345"],
"Acceptance Criteria": { "type": "doc", "version": 1, "content": [ ... ] }
}
$ acli jira workitem edit --from-json payload-5.json --yes
✗ Error: json: unknown field "Acceptance Criteria"For comparison, create --from-json accepts the additionalAttributes shape from payload 1 without issue, and the resulting ticket renders the custom field correctly. The same JSON, sent to edit, is rejected outright by the strict decoder.
This blocks any automated workflow that needs to amend custom-field values on existing tickets — common cases include:
PUT /rest/api/3/issue/{key}handles this with {"fields": {...}} — so this is purely an acli wrapper gap, not a Jira capability gap.Extend the edit --from-json decoder to accept additionalAttributes (matching the create schema) and pass its contents through to the underlying PUT /rest/api/3/issue/{key} call's fields object. Updating acli jira workitem edit --generate-json to include additionalAttributes in the template would also help discoverability.
curl against PUT /rest/api/3/issue/{key} with the API token from the macOS Keychain entry acli(base64-encoded with a go-keyring-base64: prefix).create --from-json — loses the key, only viable for tickets with no comments, links, or watchers.| Field | Value |
|---|---|
| acli version | acli version 1.3.18-stable |
| OS | macOS (darwin) |
| Site | Jira Cloud |
| Authentication | API token stored via acli jira auth login (macOS Keychain, acli service) |