@@ -188,7 +188,7 @@ func (a *subAgentAPIClient) List(ctx context.Context) ([]SubAgent, error) {
188188return agents ,nil
189189}
190190
191- func (a * subAgentAPIClient )Create (ctx context.Context ,agent SubAgent ) (SubAgent ,error ) {
191+ func (a * subAgentAPIClient )Create (ctx context.Context ,agent SubAgent ) (_ SubAgent ,err error ) {
192192a .logger .Debug (ctx ,"creating sub agent" ,slog .F ("name" ,agent .Name ),slog .F ("directory" ,agent .Directory ))
193193
194194displayApps := make ([]agentproto.CreateSubAgentRequest_DisplayApp ,0 ,len (agent .DisplayApps ))
@@ -233,19 +233,27 @@ func (a *subAgentAPIClient) Create(ctx context.Context, agent SubAgent) (SubAgen
233233if err != nil {
234234return SubAgent {},err
235235}
236+ defer func () {
237+ if err != nil {
238+ // Best effort.
239+ _ ,_ = a .api .DeleteSubAgent (ctx ,& agentproto.DeleteSubAgentRequest {
240+ Id :resp .GetAgent ().GetId (),
241+ })
242+ }
243+ }()
236244
237- agent .Name = resp .Agent . Name
238- agent .ID ,err = uuid .FromBytes (resp .Agent . Id )
245+ agent .Name = resp .GetAgent (). GetName ()
246+ agent .ID ,err = uuid .FromBytes (resp .GetAgent (). GetId () )
239247if err != nil {
240- return agent ,err
248+ return SubAgent {} ,err
241249}
242- agent .AuthToken ,err = uuid .FromBytes (resp .Agent . AuthToken )
250+ agent .AuthToken ,err = uuid .FromBytes (resp .GetAgent (). GetAuthToken () )
243251if err != nil {
244- return agent ,err
252+ return SubAgent {} ,err
245253}
246254
247- for _ ,appError := range resp .AppCreationErrors {
248- app := apps [appError .Index ]
255+ for _ ,appError := range resp .GetAppCreationErrors () {
256+ app := apps [appError .GetIndex () ]
249257
250258a .logger .Warn (ctx ,"unable to create app" ,
251259slog .F ("agent_name" ,agent .Name ),