@@ -103,6 +103,7 @@ type Model struct {
103103 Model fantasy.LanguageModel
104104 CatwalkCfg catwalk.Model
105105 ModelCfg config.SelectedModel
106+ FlatRate bool
106107}
107108
108109type sessionAgent struct {
@@ -1079,6 +1080,11 @@ func (a *sessionAgent) generateTitle(ctx context.Context, sessionID string, user
10791080 cost = *openrouterCost
10801081 }
10811082
1083+ // Skip cost accumulation
1084+ if model.FlatRate {
1085+ cost = 0
1086+ }
1087+
10821088 promptTokens := resp.TotalUsage.InputTokens + resp.TotalUsage.CacheCreationTokens
10831089 completionTokens := resp.TotalUsage.OutputTokens
10841090
@@ -1113,12 +1119,17 @@ func (a *sessionAgent) updateSessionUsage(model Model, session *session.Session,
11131119
11141120 a.eventTokensUsed(session.ID, model, usage, cost)
11151121
1122+ // Use override cost if available (e.g., from OpenRouter).
11161123 if overrideCost != nil {
1117− session.Cost += *overrideCost
1118− } else {
1119− session.Cost += cost
1124+ cost = *overrideCost
1125+ }
1126+
1127+ // Skip cost accumulation
1128+ if model.FlatRate {
1129+ cost = 0
11201130 }
11211131
1132+ session.Cost += cost
11221133 session.CompletionTokens = usage.OutputTokens
11231134 session.PromptTokens = usage.InputTokens + usage.CacheReadTokens
11241135}