If the --replace flag is omitted the import works. I think maybe some logic is required so that if the role doesn't exist, it's imported, irrespective of whether the --replace flag is specified.
ipctl import role 'bundles/role/DHPTestRole.role.json' --config ./bin/config --profile local --replace --verbose
2025-03-27T14:34:05Z INF ipctl v0.7.0 (fe8a857)
2025-03-27T14:34:05Z INF connection timeout is 5 second(s)
2025-03-27T14:34:05Z INF Creating new http client
2025-03-27T14:34:05Z INF POST https://localhost:3443/login
2025-03-27T14:34:06Z INF HTTP response is 200 OK
2025-03-27T14:34:06Z INF GET https://localhost:3443/authorization/methods
2025-03-27T14:34:07Z INF HTTP response is 200 OK
2025-03-27T14:34:07Z INF GET https://localhost:3443/authorization/roles?limit=100
2025-03-27T14:34:07Z INF HTTP response is 200 OK
2025-03-27T14:34:07Z INF GET https://localhost:3443/authorization/roles?limit=100&skip=100
2025-03-27T14:34:07Z INF HTTP response is 200 OK
2025-03-27T14:34:07Z INF Found 167 roles
Error: role `DHPTestRole` does not exist
2025-03-27T14:34:07Z FTL error="role `DHPTestRole` does not exist"
If the --replace flag is omitted the import works. I think maybe some logic is required so that if the role doesn't exist, it's imported, irrespective of whether the --replace flag is specified.