@@ -48,7 +48,7 @@ func (c *agent) handleTitleGeneration(ctx context.Context, sessionID, content st
4848 return
4949 }
5050
51− session, err := c.Sessions.Get(sessionID)
51+ session, err := c.Sessions.Get(ctx, sessionID)
5252 if err != nil {
5353 return
5454 }
@@ -56,12 +56,12 @@ func (c *agent) handleTitleGeneration(ctx context.Context, sessionID, content st
5656 session.Title = response.Content
5757 session.Title = strings.TrimSpace(session.Title)
5858 session.Title = strings.ReplaceAll(session.Title, "\n", " ")
59− c.Sessions.Save(session)
59+ c.Sessions.Save(ctx, session)
6060 }
6161}
6262
63−func (c *agent) TrackUsage(sessionID string, model models.Model, usage provider.TokenUsage) error {
64− session, err := c.Sessions.Get(sessionID)
63+func (c *agent) TrackUsage(ctx context.Context, sessionID string, model models.Model, usage provider.TokenUsage) error {
64+ session, err := c.Sessions.Get(ctx, sessionID)
6565 if err != nil {
6666 return err
6767 }
@@ -75,11 +75,12 @@ func (c *agent) TrackUsage(sessionID string, model models.Model, usage provider.
7575 session.CompletionTokens += usage.OutputTokens
7676 session.PromptTokens += usage.InputTokens
7777
78− _, err = c.Sessions.Save(session)
78+ _, err = c.Sessions.Save(ctx, session)
7979 return err
8080}
8181
8282func (c *agent) processEvent(
83+ ctx context.Context,
8384 sessionID string,
8485 assistantMsg *message.Message,
8586 event provider.ProviderEvent,
@@ -87,10 +88,10 @@ func (c *agent) processEvent(
8788 switch event.Type {
8889 case provider.EventThinkingDelta:
8990 assistantMsg.AppendReasoningContent(event.Content)
90− return c.Messages.Update(*assistantMsg)
91+ return c.Messages.Update(ctx, *assistantMsg)
9192 case provider.EventContentDelta:
9293 assistantMsg.AppendContent(event.Content)
93− return c.Messages.Update(*assistantMsg)
94+ return c.Messages.Update(ctx, *assistantMsg)
9495 case provider.EventError:
9596 if errors.Is(event.Error, context.Canceled) {
9697 return nil
@@ -105,11 +106,11 @@ func (c *agent) processEvent(
105106 case provider.EventComplete:
106107 assistantMsg.SetToolCalls(event.Response.ToolCalls)
107108 assistantMsg.AddFinish(event.Response.FinishReason)
108− err := c.Messages.Update(*assistantMsg)
109+ err := c.Messages.Update(ctx, *assistantMsg)
109110 if err != nil {
110111 return err
111112 }
112− return c.TrackUsage(sessionID, c.model, event.Response.Usage)
113+ return c.TrackUsage(ctx, sessionID, c.model, event.Response.Usage)
113114 }
114115
115116 return nil
@@ -237,7 +238,7 @@ func (c *agent) handleToolExecution(
237238 for _, toolResult := range toolResults {
238239 parts = append(parts, toolResult)
239240 }
240− msg, err := c.Messages.Create(assistantMsg.SessionID, message.CreateMessageParams{
241+ msg, err := c.Messages.Create(ctx, assistantMsg.SessionID, message.CreateMessageParams{
241242 Role: message.Tool,
242243 Parts: parts,
243244 })
@@ -247,7 +248,7 @@ func (c *agent) handleToolExecution(
247248
248249func (c *agent) generate(ctx context.Context, sessionID string, content string) error {
249250 ctx = context.WithValue(ctx, tools.SessionIDContextKey, sessionID)
250− messages, err := c.Messages.List(sessionID)
251+ messages, err := c.Messages.List(ctx, sessionID)
251252 if err != nil {
252253 return err
253254 }
@@ -256,7 +257,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
256257 go c.handleTitleGeneration(ctx, sessionID, content)
257258 }
258259
259− userMsg, err := c.Messages.Create(sessionID, message.CreateMessageParams{
260+ userMsg, err := c.Messages.Create(ctx, sessionID, message.CreateMessageParams{
260261 Role: message.User,
261262 Parts: []message.ContentPart{
262263 message.TextContent{
@@ -272,7 +273,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
272273 for {
273274 select {
274275 case <-ctx.Done():
275− assistantMsg, err := c.Messages.Create(sessionID, message.CreateMessageParams{
276+ assistantMsg, err := c.Messages.Create(ctx, sessionID, message.CreateMessageParams{
276277 Role: message.Assistant,
277278 Parts: []message.ContentPart{},
278279 })
@@ -280,7 +281,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
280281 return err
281282 }
282283 assistantMsg.AddFinish("canceled")
283− c.Messages.Update(assistantMsg)
284+ c.Messages.Update(ctx, assistantMsg)
284285 return context.Canceled
285286 default:
286287 // Continue processing
@@ -289,7 +290,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
289290 eventChan, err := c.agent.StreamResponse(ctx, messages, c.tools)
290291 if err != nil {
291292 if errors.Is(err, context.Canceled) {
292− assistantMsg, err := c.Messages.Create(sessionID, message.CreateMessageParams{
293+ assistantMsg, err := c.Messages.Create(ctx, sessionID, message.CreateMessageParams{
293294 Role: message.Assistant,
294295 Parts: []message.ContentPart{},
295296 })
@@ -297,13 +298,13 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
297298 return err
298299 }
299300 assistantMsg.AddFinish("canceled")
300− c.Messages.Update(assistantMsg)
301+ c.Messages.Update(ctx, assistantMsg)
301302 return context.Canceled
302303 }
303304 return err
304305 }
305306
306− assistantMsg, err := c.Messages.Create(sessionID, message.CreateMessageParams{
307+ assistantMsg, err := c.Messages.Create(ctx, sessionID, message.CreateMessageParams{
307308 Role: message.Assistant,
308309 Parts: []message.ContentPart{},
309310 Model: c.model.ID,
@@ -314,22 +315,22 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
314315
315316 ctx = context.WithValue(ctx, tools.MessageIDContextKey, assistantMsg.ID)
316317 for event := range eventChan {
317− err = c.processEvent(sessionID, &assistantMsg, event)
318+ err = c.processEvent(ctx, sessionID, &assistantMsg, event)
318319 if err != nil {
319320 if errors.Is(err, context.Canceled) {
320321 assistantMsg.AddFinish("canceled")
321− c.Messages.Update(assistantMsg)
322+ c.Messages.Update(ctx, assistantMsg)
322323 return context.Canceled
323324 }
324325 assistantMsg.AddFinish("error:" + err.Error())
325− c.Messages.Update(assistantMsg)
326+ c.Messages.Update(ctx, assistantMsg)
326327 return err
327328 }
328329
329330 select {
330331 case <-ctx.Done():
331332 assistantMsg.AddFinish("canceled")
332− c.Messages.Update(assistantMsg)
333+ c.Messages.Update(ctx, assistantMsg)
333334 return context.Canceled
334335 default:
335336 }
@@ -339,7 +340,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
339340 select {
340341 case <-ctx.Done():
341342 assistantMsg.AddFinish("canceled")
342− c.Messages.Update(assistantMsg)
343+ c.Messages.Update(ctx, assistantMsg)
343344 return context.Canceled
344345 default:
345346 // Continue processing
@@ -349,13 +350,13 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
349350 if err != nil {
350351 if errors.Is(err, context.Canceled) {
351352 assistantMsg.AddFinish("canceled")
352− c.Messages.Update(assistantMsg)
353+ c.Messages.Update(ctx, assistantMsg)
353354 return context.Canceled
354355 }
355356 return err
356357 }
357358
358− c.Messages.Update(assistantMsg)
359+ c.Messages.Update(ctx, assistantMsg)
359360
360361 if len(assistantMsg.ToolCalls()) == 0 {
361362 break
@@ -370,7 +371,7 @@ func (c *agent) generate(ctx context.Context, sessionID string, content string)
370371 select {
371372 case <-ctx.Done():
372373 assistantMsg.AddFinish("canceled")
373− c.Messages.Update(assistantMsg)
374+ c.Messages.Update(ctx, assistantMsg)
374375 return context.Canceled
375376 default:
376377 // Continue processing
@@ -383,7 +384,7 @@ func getAgentProviders(ctx context.Context, model models.Model) (provider.Provid
383384 maxTokens := config.Get().Model.CoderMaxTokens
384385
385386 providerConfig, ok := config.Get().Providers[model.Provider]
386− if !ok || !providerConfig.Enabled {
387+ if !ok || providerConfig.Disabled {
387388 return nil, nil, errors.New("provider is not enabled")
388389 }
389390 var agentProvider provider.Provider