I've been using Claude Code daily for the better part of a year now, which in AI terms is ages, and it has completely changed my workflow. But honestly? The default setup leaves a lot on the table, and the default permissions have you clicking yes all day: here is how to set up Claude Code permissions properly. After plenty of experimenting, I've landed on a configuration that truly works. Here's what I've learned.
Know what's happening: the Status Line
The first problem I ran into was the lack of visibility. You have no idea how much context you've consumed, which model is active, or what branch you're on, until it's too late. Seeing the active model also builds a habit worth keeping: picking the right model for each task instead of leaving one at the top of the list.
When things happened is a separate gap with a separate tool, because a Claude Code session has no clock until you bolt one on. A status line handles the present tense: what is true right now, on screen, while you work.
The fix: ccstatusline. A small tool that displays crucial session info right in your terminal.
npx ccstatusline@latestMy setup uses two lines with the following widgets:
Line 1 - 7 widgets
1 model
2 separator
3 context %
4 separator
5 session usage
6 separator
7 session clockLine 2 - 3 widgets
1 git branch
2 separator
3 git worktreeThis might sound like a minor thing, but it changes how you work. That context percentage alone is worth its weight in gold. If you want to know why I manage context this strictly, read caveman vs context-mode.
The golden rule I taught myself: keep your context below 50%. Above that, Claude gets noticeably slower and sloppier. When you're getting close, just start a fresh session. It takes 10 seconds and saves you 10 minutes of frustration.
Plugins that make a real difference
Claude Code has a plugin system and a few of them have become indispensable for me. Install them via the /plugin command:
- Superpowers, a set of skills for planning, debugging and review, including one that helps you write your own (see the full Superpowers guide).
- CodeSimplifier, an autonomous agent that simplifies and refines your code for clarity and maintainability without changing functionality. Great to run after a long coding session or before submitting a PR.
- Context7, an MCP server that fetches up-to-date, version-specific documentation and injects it into your prompts. No more hallucinated APIs or deprecated methods.
Sequential Thinking: no longer needed
When I first wrote this, Sequential Thinking was the addition I recommended most: an MCP server that makes Claude reason step by step before it writes code. Current models do that by default, so I no longer install it.
The right terminal matters
Claude Code runs in any terminal, but you spend your whole day in it. On Linux I use Ghostty. When I work in WSL on Windows, I just use Windows Terminal.
Skills: teach Claude your conventions
Skills are built into Claude Code. A skill is a SKILL.md file in .claude/skills/[skill-name]/ that Claude loads when the situation calls for it. You can write one by hand, or let the skill-writing skill in Superpowers do the heavy lifting.
A real-world example
Say you have a React project and you want Claude to always follow your conventions: TypeScript interfaces, named exports, Tailwind, no React import. Instead of explaining this every single session, you create a skill:
.claude/skills/react-guardrail/SKILL.md
---
name: react-guardrail
description: Use this skill when creating or modifying React components.
---
# React Component Standard
When creating components, follow these rules:
1. **No Default Exports** — always use `export const ComponentName = ...`
2. **TypeScript** — always define an `interface Props`
3. **Styling** — Tailwind CSS classes only
4. **Imports** — don't import React (new JSX transform)
## Example:
```typescript
interface Props {
title: string;
}
export const Header = ({ title }: Props) => {
return <h1 className="text-xl font-bold">{title}</h1>;
};
```From now on, Claude automatically loads these rules whenever you create or modify a component. No more repeating yourself, and consistent code across your entire project. For a deeper treatment, see how to write a good Claude Code skill.
Away from your desk: Remote Control
When I'm away from my own machine, I keep working from the native Claude app. Remote Control connects a Claude Code session on your machine to the Claude app or claude.ai/code. Your code, files, MCP servers and tools stay on your machine. Only the conversation travels.
There are three ways to start it. From the command line:
# start a new session you can also steer remotely
claude --remote-control "My project"
# or run it as a server that accepts several sessions
claude remote-control --name "My project"In a session that is already running, type /remote-control. Claude Code prints a link to open the session in the browser. In server mode, press the spacebar to show a QR code you can scan with the Claude app. You can also find the session by name in the app's Code tab. Ctrl+C stops it.
Three things need to be in place for it to work:
- A claude.ai subscription. Remote Control needs a Pro, Max, Team or Enterprise plan, and you have to sign in with that account through
/login. An API key does not work, and neither does Bedrock, Vertex or a customANTHROPIC_BASE_URL. On Team and Enterprise an admin has to switch it on. - Environment variables. If you set
DISABLE_TELEMETRY,DO_NOT_TRACKorCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, Remote Control stays off, because those also switch off the flags it depends on. - A process that keeps running. Close the terminal and the session goes offline. Over SSH, run it inside
tmux.
The desktop app can also start Claude Code sessions of its own from the Code tab: locally, over SSH, in WSL or in the cloud. The details are in the Remote Control documentation.
My daily checklist
This is what I start every session with:
- Status line active, keep context below 50%
- Custom skills up to date in
.claude/skills/
It takes some time to set up, but the payoff is more than worth it. With the right setup, Claude Code becomes a serious development partner rather than just a chatbot in your terminal.