<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ofek v</title>
    <description>The latest articles on DEV Community by ofek v (@ofek_v_de88401ddceb10ae59).</description>
    <link>https://dev.to/ofek_v_de88401ddceb10ae59</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3562478%2Faf654072-81a0-4f60-94aa-90da4693723c.png</url>
      <title>DEV Community: ofek v</title>
      <link>https://dev.to/ofek_v_de88401ddceb10ae59</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ofek_v_de88401ddceb10ae59"/>
    <language>en</language>
    <item>
      <title>Supercharging DeepSeek Harness: Bringing Claude Pro/Max with One-Click Google/Gmail OAuth Login and Real-Time Quota Tracking</title>
      <dc:creator>ofek v</dc:creator>
      <pubDate>Sun, 06 Sep 2026 11:01:15 +0000</pubDate>
      <link>https://dev.to/ofek_v_de88401ddceb10ae59/supercharging-deepseek-harness-bringing-claude-promax-with-one-click-googlegmail-oauth-login-and-253d</link>
      <guid>https://dev.to/ofek_v_de88401ddceb10ae59/supercharging-deepseek-harness-bringing-claude-promax-with-one-click-googlegmail-oauth-login-and-253d</guid>
      <description>&lt;p&gt;&lt;em&gt;By **grloper&lt;/em&gt;* (&lt;a href="https://github.com/grloper" rel="noopener noreferrer"&gt;GitHub @grloper&lt;/a&gt;)*&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Introduction: The Subscription Dilemma in Modern Agent Frameworks
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/deepseek-ai/deepseek-harness" rel="noopener noreferrer"&gt;DeepSeek Harness (DSH)&lt;/a&gt; has quickly established itself as one of the most capable, modular agent orchestration environments. Built on an extensible Cordis architecture where every feature â€” from persistence and sandboxing to tools and UI components â€” is a hot-pluggable plugin, DSH allows developers to assemble tailored autonomous coding environments.&lt;/p&gt;

&lt;p&gt;However, many AI developers face a common friction point: &lt;strong&gt;how do you use your existing Claude subscription in DSH?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Millions of developers subscribe to &lt;strong&gt;Claude Pro&lt;/strong&gt; or &lt;strong&gt;Claude Max&lt;/strong&gt; directly through &lt;code&gt;claude.ai&lt;/code&gt;. These subscriptions include substantial usage allowances, but they authenticate via browser OAuth rather than raw developer console API keys. Previously, attempting to use Claude in DSH meant:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Being forced to open a terminal, run &lt;code&gt;claude login&lt;/code&gt;, and hope local files were parsed correctly.&lt;/li&gt;
&lt;li&gt;Manually dumping tokens and editing YAML configuration files.&lt;/li&gt;
&lt;li&gt;Dealing with silent token expiry without any visual feedback.&lt;/li&gt;
&lt;li&gt;If you originally signed up with &lt;strong&gt;"Continue with Google" (Gmail)&lt;/strong&gt;, there was no native UI in DSH Settings to authenticate.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To eliminate this friction once and for all, I built and open-sourced &lt;strong&gt;&lt;a href="https://github.com/grloper/dsh-claude-oauth" rel="noopener noreferrer"&gt;&lt;code&gt;dsh-claude-oauth&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; â€” a complete, production-grade DSH plugin that provides a native &lt;strong&gt;Claude Settings section&lt;/strong&gt; with &lt;strong&gt;one-click Google / Gmail sign-in&lt;/strong&gt;, auto-refreshing tokens, live model discovery, and real-time subscription quota tracking.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Visual Walkthrough: How It Looks in DSH
&lt;/h2&gt;

&lt;p&gt;Here is the native Settings interface that &lt;code&gt;dsh-claude-oauth&lt;/code&gt; contributes to DeepSeek Harness:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvfnqu111x5elncdfnv7s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvfnqu111x5elncdfnv7s.png" alt="DSH Claude Settings UI" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What You See in Settings
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dedicated Navigation Entry&lt;/strong&gt;: Positioned at order &lt;code&gt;13&lt;/code&gt; in the Settings sidebar, sitting cleanly alongside Antigravity (Google Gemini) and OpenAI Codex.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Account Status Card&lt;/strong&gt;: When authenticated, displays your linked Google/Gmail address, subscription tier pill (&lt;code&gt;CLAUDE MAX&lt;/code&gt; or &lt;code&gt;CLAUDE PRO&lt;/code&gt;), and active connection status.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Subscription Quota Bars&lt;/strong&gt;: Shows real-time utilization for both the &lt;strong&gt;5-Hour&lt;/strong&gt; and &lt;strong&gt;7-Day&lt;/strong&gt; subscription windows with live countdown timers until reset.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active Model Catalog&lt;/strong&gt;: Displays available models (&lt;code&gt;Claude Sonnet 4.5&lt;/code&gt;, &lt;code&gt;Claude Opus 4.5&lt;/code&gt;, &lt;code&gt;Claude Haiku 4.5&lt;/code&gt;, and &lt;code&gt;Claude 3.7 Sonnet&lt;/code&gt;) verified live from Anthropic's API.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Architecture Deep-Dive: How It Works
&lt;/h2&gt;

&lt;p&gt;Under the hood, &lt;code&gt;dsh-claude-oauth&lt;/code&gt; is divided into two cooperative halves: a &lt;strong&gt;Host plugin&lt;/strong&gt; running in Node.js and a &lt;strong&gt;Web Client plugin&lt;/strong&gt; running in the browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl2z2lssezh0ixtlbh2io.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl2z2lssezh0ixtlbh2io.png" alt="OAuth Architecture Flow" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 The PKCE Loopback Flow &amp;amp; The Windows IPv6 Pitfall
&lt;/h3&gt;

&lt;p&gt;When you click &lt;strong&gt;"Sign in with Google / Gmail"&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The client opens a tab pointing to &lt;code&gt;/api/anthropic-oauth/login&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The host generates a cryptographically random 32-byte PKCE code verifier and computes its SHA-256 code challenge (&lt;code&gt;S256&lt;/code&gt;), along with a random CSRF state token.&lt;/li&gt;
&lt;li&gt;The host binds an ephemeral HTTP callback listener on &lt;code&gt;localhost:0&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is a critical engineering detail: &lt;strong&gt;Windows localhost resolution&lt;/strong&gt;.&lt;br&gt;
On modern Windows systems, &lt;code&gt;localhost&lt;/code&gt; often resolves to IPv6 &lt;code&gt;::1&lt;/code&gt; before IPv4 &lt;code&gt;127.0.0.1&lt;/code&gt;. A server that only binds to &lt;code&gt;127.0.0.1&lt;/code&gt; will result in &lt;code&gt;ECONNREFUSED&lt;/code&gt; when the browser redirects back to &lt;code&gt;http://localhost:&amp;lt;port&amp;gt;/callback&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dsh-claude-oauth&lt;/code&gt; implements a dual-stack listener that binds both IPv4 and IPv6 on the identical ephemeral port:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;server4&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;server4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;127.0.0.1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nx"&gt;resolvedPort&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;server4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;address&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;

&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;server6&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;server6&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolvedPort&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;::1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;The user is redirected to &lt;code&gt;https://claude.ai/oauth/authorize&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;On the Claude sign-in screen, the user chooses &lt;strong&gt;"Continue with Google"&lt;/strong&gt; and selects their Gmail account.&lt;/li&gt;
&lt;li&gt;Once authorized, Anthropic redirects back to &lt;code&gt;http://localhost:&amp;lt;port&amp;gt;/callback?code=...&amp;amp;state=...&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The loopback server verifies the state, exchanges the authorization code for tokens via &lt;code&gt;https://claude.ai/v1/oauth/token&lt;/code&gt;, and queries &lt;code&gt;https://api.anthropic.com/api/oauth/profile&lt;/code&gt; to retrieve the user's Gmail address and subscription tier.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3.2 Multi-Store Credential Synchronization
&lt;/h3&gt;

&lt;p&gt;To prevent isolated silos, &lt;code&gt;dsh-claude-oauth&lt;/code&gt; synchronizes credentials across all relevant stores upon authentication:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;~/.claude/.credentials.json&lt;/code&gt;&lt;/strong&gt;: Writes the &lt;code&gt;claudeAiOauth&lt;/code&gt; session (access token, refresh token, expiry, scopes, email). This ensures the official Claude Code CLI also recognizes the login!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;~/.dsh/.credentials.yaml&lt;/code&gt;&lt;/strong&gt;: Mounts &lt;code&gt;ANTHROPIC_OAUTH_TOKEN&lt;/code&gt; and &lt;code&gt;CLAUDE_CODE_OAUTH_TOKEN&lt;/code&gt; into the native DSH credential resolution seam.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;~/.dsh/settings.yaml&lt;/code&gt;&lt;/strong&gt;: Automatically declares &lt;code&gt;llm-pi-ai.providers.anthropic&lt;/code&gt; with the live discovered model list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;~/.dsh/plugins/subscriptions/auth.json&lt;/code&gt;&lt;/strong&gt;: Syncs with the multi-provider subscriptions store so other plugins stay updated.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3.3 Real-Time Unified Rate Limit Probing
&lt;/h3&gt;

&lt;p&gt;Anthropic attaches its unified subscription rate-limit headers only to inference responses (&lt;code&gt;POST /v1/messages&lt;/code&gt;), &lt;strong&gt;never&lt;/strong&gt; to catalog endpoints (&lt;code&gt;/v1/models&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;To provide live 5-hour and 7-day usage readouts without burning quota, &lt;code&gt;dsh-claude-oauth&lt;/code&gt; executes an ultra-cheap &lt;code&gt;max_tokens: 1&lt;/code&gt; probe using Claude 3.5 Haiku:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.anthropic.com/v1/messages&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;claudeCodeHeaders&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;accessToken&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;OAUTH_DISCOVERY_BETAS&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;claude-haiku-4-5-20251001&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hi&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From this single-token response, it extracts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;anthropic-ratelimit-unified-5h-utilization&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;anthropic-ratelimit-unified-5h-reset&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;anthropic-ratelimit-unified-7d-utilization&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;anthropic-ratelimit-unified-7d-reset&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These values are cached with a 60-second TTL and rendered into smooth, color-coded progress bars (green below 70%, amber 70â€“89%, red 90%+).&lt;/p&gt;




&lt;h2&gt;
  
  
  4. How to Install and Use
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Install the Plugin
&lt;/h3&gt;

&lt;p&gt;Run this command from your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dsh plugin &lt;span class="nt"&gt;--profile&lt;/span&gt; web add github:grloper/dsh-claude-oauth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Open Settings &amp;amp; Sign In
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Start DSH Web: &lt;code&gt;dsh web&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click the gear icon in the lower-left corner to open &lt;strong&gt;Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Claude (Anthropic)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"Sign in with Google / Gmail"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select your Google/Gmail account and click &lt;strong&gt;Authorize&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The browser confirms success; return to DSH and see your account and quota live!&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 3: Start Coding with Claude
&lt;/h3&gt;

&lt;p&gt;Open any session and select &lt;strong&gt;Claude Sonnet 4.5&lt;/strong&gt; or &lt;strong&gt;Claude 3.7 Sonnet&lt;/strong&gt; from the composer model picker.&lt;/p&gt;

&lt;p&gt;To make Claude your default agent model across all sessions, set it in &lt;code&gt;~/.dsh/settings.yaml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;agent-default-model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;anthropic&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-sonnet-4-5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5. Conclusion &amp;amp; Open Source Repository
&lt;/h2&gt;

&lt;p&gt;DeepSeek Harness provides an outstanding foundation for autonomous AI coding. With &lt;code&gt;dsh-claude-oauth&lt;/code&gt;, utilizing your existing Claude Pro or Max subscription with Google/Gmail login is now as frictionless as a single click.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/grloper/dsh-claude-oauth" rel="noopener noreferrer"&gt;https://github.com/grloper/dsh-claude-oauth&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: MIT&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contributions&lt;/strong&gt;: Pull requests, feature suggestions, and bug reports are warmly welcomed!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>claude</category>
      <category>ai</category>
      <category>oauth</category>
    </item>
  </channel>
</rss>
