Skip to content

Commit 57d2ebf

Browse files
fix: sanitize error messages to prevent leaking internal details
- Remove raw HTTP response bodies and status codes from OAuth errors - Replace all %v error prints with api.UserMessageVerbose() which returns the APIError message when available or a safe generic fallback otherwise - Add debug: line with raw error when CREATEOS_DEBUG is set - Replace pterm table render errors with generic message - Replace TUI catalog/skills error displays with generic message - Add Hint() display for API errors in main.go
1 parent 05f45b6 commit 57d2ebf

17 files changed

Lines changed: 69 additions & 42 deletions

File tree

cmd/deployments/helpers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func pickDeployment(client *api.APIClient, projectID string, statusFilter []stri
8383
}
8484
fmt.Println()
8585
if err = pterm.DefaultTable.WithHasHeader().WithData(tableData).Render(); err != nil {
86-
pterm.Error.Println(err)
86+
pterm.Error.Println("could not display table")
8787
}
8888
fmt.Println()
8989

cmd/deployments/list.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func newDeploymentsListCommand() *cli.Command {
5151
})
5252
}
5353
if err := pterm.DefaultTable.WithHasHeader().WithData(tableData).Render(); err != nil {
54-
pterm.Error.Println(err)
54+
pterm.Error.Println("could not display table")
5555
}
5656
})
5757
return nil

cmd/environments/list.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func newEnvironmentsListCommand() *cli.Command {
6363
})
6464
}
6565
if err := pterm.DefaultTable.WithHasHeader().WithData(tableData).Render(); err != nil {
66-
pterm.Error.Println(err)
66+
pterm.Error.Println("could not display table")
6767
}
6868
fmt.Println()
6969
})

cmd/oauth/list.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func newListCommand() *cli.Command {
4141
})
4242
}
4343
if err := pterm.DefaultTable.WithHasHeader().WithData(tableData).Render(); err != nil {
44-
pterm.Error.Println(err)
44+
pterm.Error.Println("could not display table")
4545
}
4646
fmt.Println()
4747
})

cmd/sandbox/devices.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ func runDeviceUnregister(c *cli.Context) error {
231231
ctx, cancel := context.WithTimeout(c.Context, 10*time.Second)
232232
defer cancel()
233233
if err := client.DeleteDevice(ctx, st.DeviceID); err != nil {
234-
pterm.Warning.Printfln("Server-side revoke failed: %v", err)
234+
pterm.Warning.Printfln("Server-side revoke failed: %s", api.UserMessageVerbose(err))
235235
pterm.Println(pterm.Gray(" (clearing local state anyway; revoke from the UI to be safe)"))
236236
}
237237
if err := clearDeviceState(); err != nil {

cmd/sandbox/disk.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ func runDiskRm(c *cli.Context) error {
317317
failed := 0
318318
for _, ref := range refs {
319319
if err := deleteDiskCascade(c, client, ref); err != nil {
320-
pterm.Error.Printfln("%s: %v", ref, err)
320+
pterm.Error.Printfln("%s: %s", ref, api.UserMessageVerbose(err))
321321
failed++
322322
continue
323323
}

cmd/sandbox/edit.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ func runEditMenu(c *cli.Context, client *api.SandboxClient, label, id string) er
241241
continue
242242
}
243243
if err := applyAddSSHKeys(c, client, label, id, []string{path}); err != nil {
244-
pterm.Error.Printfln("%v", err)
244+
pterm.Error.Printfln("%s", api.UserMessageVerbose(err))
245245
continue
246246
}
247247
// Refresh so the next pass shows the new count.
@@ -271,7 +271,7 @@ func runEditMenu(c *cli.Context, client *api.SandboxClient, label, id string) er
271271
bytes := int64(picked) << 30 // GiB, matches humanBytes() display
272272
updated, rerr := client.RechargeBandwidth(c.Context, id, bytes)
273273
if rerr != nil {
274-
pterm.Error.Printfln("%v", rerr)
274+
pterm.Error.Printfln("%s", api.UserMessageVerbose(rerr))
275275
continue
276276
}
277277
bw = updated
@@ -295,7 +295,7 @@ func runEditMenu(c *cli.Context, client *api.SandboxClient, label, id string) er
295295
continue
296296
}
297297
if err := applyAutoPauseFlag(c, client, label, id, input); err != nil {
298-
pterm.Error.Printfln("%v", err)
298+
pterm.Error.Printfln("%s", api.UserMessageVerbose(err))
299299
continue
300300
}
301301
if refreshed, err := client.GetSandbox(c.Context, id); err == nil {

cmd/sandbox/network.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ func runNetworkRm(c *cli.Context) error {
244244
failed := 0
245245
for _, ref := range refs {
246246
if err := deleteNetworkCascade(c, client, ref); err != nil {
247-
pterm.Error.Printfln("%s: %v", ref, err)
247+
pterm.Error.Printfln("%s: %s", ref, api.UserMessageVerbose(err))
248248
failed++
249249
continue
250250
}

cmd/sandbox/rm.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,12 @@ func runRm(c *cli.Context) error {
108108
for _, ref := range ids {
109109
id, err := resolveSandboxRef(c.Context, client, ref)
110110
if err != nil {
111-
pterm.Error.Printfln("%s: %v", ref, err)
111+
pterm.Error.Printfln("%s: %s", ref, api.UserMessageVerbose(err))
112112
failed++
113113
continue
114114
}
115115
if err := client.DestroySandbox(c.Context, id); err != nil {
116-
pterm.Error.Printfln("%s: %v", ref, err)
116+
pterm.Error.Printfln("%s: %s", ref, api.UserMessageVerbose(err))
117117
failed++
118118
continue
119119
}

cmd/sandbox/template.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ func runTemplateRm(c *cli.Context) error {
380380
failed := 0
381381
for _, ref := range refs {
382382
if err := client.DeleteTemplate(c.Context, ref); err != nil {
383-
pterm.Error.Printfln("%s: %v", ref, err)
383+
pterm.Error.Printfln("%s: %s", ref, api.UserMessageVerbose(err))
384384
failed++
385385
continue
386386
}

0 commit comments

Comments
 (0)