aider

Install command:
brew install aider

AI pair programming in your terminal

https://aider.chat/

License: Apache-2.0

Development: Pull requests

Formula JSON API: /api/formula/aider.json

Formula code: aider.rb on GitHub

Bottle (binary package) installation support provided for:

macOS on
Apple Silicon
golden gate ✅
tahoe ✅
sequoia ✅
Linux ARM64 ✅
x86_64 ✅

Current versions:

stable ✅ 0.86.2
head ⚡️ HEAD

Depends on:

certifi 2026.10.19 Mozilla CA bundle for Python
freetype 2.15.0 Software library to render fonts
gcc 16.2.0 GNU compiler collection
jpeg-turbo 3.2.0 JPEG image codec that aids compression and decompression
libyaml 0.2.5 YAML Parser
openblas 0.3.34 Optimized BLAS library
python@3.12 3.12.15 Interpreted, interactive, object-oriented programming language

Depends on when building from source:

ninja 1.13.2 Small build system for use with gyp or CMake
pkgconf 3.0.10 Package compiler and linker metadata toolkit
rust 1.99.1 Safe, concurrent, practical language

Uses from macOS: libffi

Binaries: aider

Known vulnerabilities in the current version:

GHSA-w8v5-vhqr-4h9v DiskCache has unsafe pickle deserialization
GHSA-59cr-6r3x-644w GitPython submodule update path traversal can write outside the repository
CVE-2026-10175 Aider-AI Aider Architect Mode auth.py editor_coder.run code injection
CVE-2026-10177 Aider-AI Aider AWS EC2 Metadata Endpoint api_docs.py requests.get server-side request forgery
GHSA-27vj-qcqg-25rc (high) fsspec: Server-Side Template Injection in ReferenceFileSystem leads to Remote Code Execution
GHSA-54p9-h82j-f925 (medium) Multidict: Reference leak in CIMultiDict/MultiDict items-view union and subtraction
GHSA-494j-54xm-rwp3 AIOHTTP: Secure attribute not enforced for shared cookie
GHSA-5wr8-gcqf-gqf3 aiohttp server lacks an initial request/header timeout
GHSA-6cjc-53gc-5rqm AIOHTTP: Connector pool exhaustion via Max-Age overflow
GHSA-9xw5-w5jj-pvcg AIOHTTP: File descriptor exhaustion in multipart requests
GHSA-f9xw-jh8m-3mwq AIOHTTP: Absolute-form request targets can spoof Request.scheme
GHSA-gx76-c99x-2c96 AIOHTTP: Cookie from subdomain can remove Host-Only Scope from existing cookies
GHSA-pqxq-w44r-73xw AIOHTTP: Pure-Python parser request smuggling
GHSA-22hg-r758-rrw9 Pillow: Infinite loop in MIC n_frames when the embedded TIFF
GHSA-254f-3936-288h Pillow: PdfParser can recurse without limit in get_value() and linearize_page_tree()
GHSA-27h8-gf7j-v5hc Pillow: NULL dereference in ImagingExpand via rank filters on zero-size images
GHSA-332p-7hrc-92wf Pillow: Heap buffer overflow in _tiffWriteProc when saving TIFF to BytesIO
GHSA-4558-3h8r-v8xp Pillow: P;2L and P;4L decoders may read 1 to 3 bytes past the passed buffer size
GHSA-462x-pgg6-55fp (medium) Pillow tiled-TIFF decoder reads past tile buffer in copy4 (Unpack.c:1290)
GHSA-4rr5-89j8-mwwm (medium) Pillow: Heap use-after-free when encoding TIFF to an in-memory buffer
GHSA-58r4-6rv3-gfh8 Pillow: Out-of-bounds access in _imagingmorph on a zero-width image
GHSA-5xm2-6676-qcp9 Pillow: APNG background disposal allocates full canvas before decompression bomb check
GHSA-65qm-jvmh-6pqg Pillow: GIF seek keeps rejected size after DecompressionBombError, allowing DoS
GHSA-74r2-7ff9-mjj2 Pillow: Quadratic GIF comment concatenation allows DoS in Image.open()
GHSA-7mwm-ghpf-9vrm Pillow: Double free in ImagingScaleAffine on calloc failure via Image.transform
GHSA-8g5g-8vmr-9782 Pillow: Heap buffer overflow in ImagingJpegDecode
GHSA-c6hw-5grf-ff96 Pillow: OOB read in TiffDecode.c tile and RGBA paths leaks heap memory into pixels
GHSA-cp9v-662q-vvx9 Pillow: NULL pointer dereference in Image.merge via an unvalidated band 0
GHSA-f2g6-542v-9j58 Pillow: Infinite loop in PdfParser.rewrite_pages on page tree Parent cycle
GHSA-fc9g-5qg7-mf45 Pillow: Quadratic GIF comment copying during save
GHSA-gg2r-wvfm-q9rx Pillow: MSP RLE decoder expands a tiny file into unbounded memory
GHSA-j4m9-6w36-pw47 Pillow: Invalid free in FreeType glyph rendering when a stroker is active
GHSA-jg86-v3jv-hrpm Pillow: Quadratic-time DoS in PDF save_all (PdfParser.next_object_id)
GHSA-p4wg-p73j-c528 Pillow: Unbounded recursion parsing a PDF page tree or trailer chain (incomplete fix for CVE-2026...
GHSA-pchr-8j38-3x4p Pillow: TIFF encoder ColorMap plane-size mismatch causes a heap out-of-bounds read
GHSA-q45j-58j2-45rg Pillow: TiffDecode returns uninitialized memory as pixels for short JPEG strips
GHSA-rfgq-q3w2-pmv2 Pillow: Image.quantize() with empty palette leaks uninitialized stack memory
GHSA-vx6w-vv9f-6gvg Pillow: EPS load(scale) lets Ghostscript render past the decompression bomb limit
GHSA-w889-685w-c8fh Pillow: Argument Injection in Ghostscript call, potentially leading into RCE
GHSA-xgh8-jp6q-p5x8 Pillow: ReDoS in XbmImagePlugin: 512-byte file stalls Image.open() for minutes
GHSA-xvh5-g6gv-559v Pillow: Memory disclosure and segfault in libtiff encoder via crafted TIFF tags
GHSA-qmf3-4767-5fg3 (medium) LiteLLM: M2M JWT Handler Has Improper Authorization
GHSA-mf52-j94g-746m (medium) LiteLLM: PROXY_ADMIN database API Key Generator Has Insufficient Session Expiration
GHSA-4jcj-7x88-m979 (high) LiteLLM: MCP Proxy Has Improper Authentication
GHSA-j37q-q7p9-vpwm (high) LiteLLM: SSO Debug Flow Has Improper Authentication
GHSA-w2mh-qq9q-453x (medium) BerriAI litellm: SSO Login Does Not Invalidate Previous UI Session Tokens
GHSA-p897-vf7j-f5h8 (medium) BerriAI litellm has Security Feature Bypass in BannedKeywords and AzureContentSafety Guardrails v...
GHSA-c693-x898-5g4h (medium) BerriAI litellm has SSRF via Unvalidated spec_path URL in MCP OpenAPI Spec Loader
GHSA-m2v5-74w2-qhcj (medium) BerriAI litellm: UI User Enumeration leads to System-Wide Information Disclosure
GHSA-w2fm-2cpv-w7v5 aiohttp allows unlimited trailer headers, leading to possible uncapped memory usage
GHSA-gc5v-m9x4-r6x2 (medium) Requests has Insecure Temp File Reuse in its extract_zipped_paths() utility function
GHSA-mf9w-mj56-hr94 (medium) python-dotenv: Symlink following in set_key allows arbitrary file overwrite via cross-device rena...
GHSA-hcc4-c3v8-rx92 AIOHTTP Affected by Denial of Service (DoS) via Unbounded DNS Cache in TCPConnector
GHSA-2vrm-gr82-f7m5 AIOHTTP has CRLF injection through multipart part content type header construction
GHSA-p998-jp59-783m AIOHTTP affected by UNC SSRF/NTLMv2 Credential Theft/Local File Read in static resource handler o...
GHSA-m5qp-6w8w-w647 (high) AIOHTTP has a Multipart Header Size Bypass
GHSA-3wq7-rqq7-wx6j AIOHTTP has late size enforcement for non-file multipart fields causes memory DoS
GHSA-966j-vmvw-g2g9 (medium) AIOHTTP leaks Cookie and Proxy-Authorization headers on cross-origin redirect
GHSA-mwh4-6h8g-pg8w AIOHTTP has HTTP response splitting via \r in reason phrase
GHSA-63hf-3vf5-4wqf (critical) AIOHTTP's C parser (llhttp) accepts null bytes and control characters in response header values -...
GHSA-c427-h43c-vf67 AIOHTTP accepts duplicate Host headers
GHSA-jg22-mg44-37j8 (medium) AIOHTTP is Vulnerable to Deserialization of Untrusted Data
GHSA-53mr-6c8q-9789 LiteLLM: Privilege escalation via unrestricted proxy configuration endpoint
GHSA-jjhc-v7c2-5hh6 LiteLLM: Authentication bypass via OIDC userinfo cache key collision
GHSA-6wvf-77m9-58rm (critical) LiteLLM vulnerable to server-side template injection in the /prompts/test endpoint
GHSA-whj4-6x5x-4v2j (high) FITS GZIP decompression bomb in Pillow
GHSA-wxxx-gvqv-xp7p (high) LiteLLM has a sandbox escape in custom-code guardrail
GHSA-xqmj-j6mv-4862 LiteLLM: Server-Side Template Injection in /prompts/test endpoint
GHSA-rpm5-65cw-6hj4 (high) GitPython has Command Injection via Git options bypass
GHSA-v4p8-mg3p-g94g (high) LiteLLM: Authenticated command execution via MCP stdio test endpoints
GHSA-x2qx-6953-8485 (high) GitPython: Unsafe option check validates multi_options before shlex.split transformation
GHSA-wjx4-4jcj-g98j (medium) Pillow has an integer overflow when processing fonts
GHSA-5xmw-vc9v-4wf2 (medium) Pillow has a heap buffer overflow with nested list coordinates
GHSA-r73j-pqj5-w3x7 (medium) Pillow has a PDF Parsing Trailer Infinite Loop (DoS)
GHSA-pwv6-vv43-88gr Pillow has an OOB Write with Invalid PSD Tile Extents (Integer Overflow)
GHSA-7545-fcxq-7j24 (high) GitPython reference APIs has a path traversal vulnerability that allows arbitrary file write and ...
GHSA-v87r-6q3f-2j67 (high) GitPython: Newline injection in config_writer().set_value() enables RCE via core.hooksPath
GHSA-qccp-gfcp-xxvc (medium) urllib3: Sensitive headers forwarded across origins in proxied low-level redirects
GHSA-mf9v-mfxr-j63j (high) urllib3: Decompression-bomb safeguards bypassed in parts of the streaming API
GHSA-5239-wwwm-4pmq (low) Pygments has Regular Expression Denial of Service (ReDoS) due to Inefficient Regex for GUID Matching
GHSA-65pc-fj4g-8rjx (medium) Internationalized Domain Names in Applications (IDNA): Specially crafted inputs to idna.encode() ...
GHSA-qrc4-49gv-mv9m (high) LiteLLM allows an authenticated internal_user to create API keys with access to routes that their...
GHSA-wpfp-gwwc-vwq6 (high) LiteLLM allows a user to modify their own user_role via the /user/update endpoint
GHSA-hg6j-4rv6-33pg AIOHTTP is vulnerable to cross-origin redirect with per-request cookies
GHSA-86qp-5c8j-p5mr (medium) Starlette has missing Host header validation that poisons request.url.path, bypassing path-based ...
GHSA-x746-7m8f-x49c (medium) Starlette: Arbitrary HTTP method dispatched to `HTTPEndpoint` attributes via `getattr`
GHSA-wqp7-x3pw-xc5r (high) Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows
GHSA-4xpc-pv4p-pm3w (critical) LiteLLM: Authentication Bypass via Host Header Injection
GHSA-2wc2-fm75-p42x (high) Soup Sieve has Memory Exhaustion via Large Comma-Separated Selector Lists
GHSA-836r-79rf-4m37 (high) Soup Sieve: Regular Expression Denial of Service (ReDoS) via Selector Parser
GHSA-m6qw-4cw2-hm4m aiohttp: CRLF injection in multipart headers
GHSA-62p4-gmf7-7g93 Pillow: Out-of-bounds read via attacker-controlled row stride on Pillow's mmap path (McIdas AREA ...
GHSA-8v84-f9pq-wr9x (high) Pillow `PcfFontFile._load_bitmaps()`: `Image.frombytes()` called without `_decompression_bomb_che...
GHSA-5x94-69rx-g8h2 (high) Pillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()`
GHSA-4fvr-rgm6-gqmc aiohttp: HTTP/1 Pipelined Requests Queue Without Limit
GHSA-xcgm-r5h9-7989 aiohttp: Incomplete websocket frame payloads bypass memory limits
GHSA-4m7w-qmgq-4wj5 aiohttp: TLS Server Hostname Override Is Ignored When Reusing HTTPS Connections
GHSA-hpj7-wq8m-9hgp aiohttp: DigestAuthMiddleware Applies Credentials to Cross-Origin Redirect Challenges
GHSA-63hw-fmq6-xxg2 aiohttp: C HTTP Parser Bypasses max_line_size for Fragmented Lines
GHSA-g3cq-j2xw-wf74 aiohttp: Unread Compressed Request Bodies Bypass client_max_size During Cleanup
GHSA-2fqr-mr3j-6wp8 aiohttp: Host-Only Cookies Become Domain Cookies After CookieJar Persistence
GHSA-9x8q-7h8h-wcw9 aiohttp: Payload Response Resources Are Not Closed After Mid-Body Disconnect
GHSA-jp82-jpqv-5vv3 (low) Starlette: Unvalidated request path concatenated into authority poisons request.url.hostname
GHSA-82w8-qh3p-5jfq (high) Starlette: request.form() limits silently ignored for application/x-www-form-urlencoded enable DoS
GHSA-45hq-cxwh-f6vc (high) Pillow `BdfFontFile`: `Image.new()` called without `_decompression_bomb_check()` — bomb protectio...
GHSA-phj9-mv4w-65pm (high) Pillow `GdImageFile._open()`: image dimensions accepted without `_decompression_bomb_check()`
GHSA-4x4j-2g7c-83w6 (medium) Pillow: WindowsViewer.get_command() OS command injection via unescaped shell path
GHSA-xj96-63gp-2gmr (high) Pillow: Heap out-of-bounds write in `ImageFilter.RankFilter` via integer overflow in `ImagingExpand`
GHSA-fj7v-r99m-22gq (medium) Pillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images
GHSA-6r8x-57c9-28j4 (high) Pillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow
GHSA-jjj6-mw9f-p565 (high) Pillow: Decompression Bomb DoS via PdfParser.PdfStream.decode()
GHSA-pg7v-jwj7-p798 (medium) Pillow EpsImagePlugin negative %%BeginBinary byte count causes infinite loop denial of service
GHSA-vjc4-5qp5-m44j Pillow JPEG2000 tiled decode retains a growing scratch buffer and can be used for denial of service
GHSA-9hw9-ch79-4vh6 (high) Pillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode...
GHSA-4g5m-c9r5-49xf LiteLLM: Local file read via request-supplied OIDC file references
GHSA-5jmr-gcrj-2c9q LiteLLM: Arbitrary file write via path traversal in Skills archive extraction
GHSA-72m8-9m7m-h278 LiteLLM: Custom Code Guardrails production endpoints bypass code safety checks
GHSA-7488-6r32-c95q LiteLLM: MCP Authentication Bypass via OAuth2 Passthrough Fallback
GHSA-hx8v-g79f-8w5f LiteLLM Proxy has server-side request forgery via the `user_config` request parameter
GHSA-mq44-7p77-q5h7 AIOHTTP: WebSocket client accepts compressed frames without negotiated permessage-deflate
GHSA-82r6-8w77-94w6 AnyIO: TLSStream IDNA 2003 host name encoding enables potential TLS certificate spoofing
GHSA-5p39-cfhj-2xmp AnyIO process-pool workers can block indefinitely on undrained stderr
GHSA-rwj8-pgh3-r573 (high) GitPython: Environment-variable exfiltration via os.path.expandvars() on Repo.clone_from() URL
GHSA-956x-8gvw-wg5v (high) GitPython: command injection via unguarded Git options in `Repo.archive()`, `git.ls_remote()`, an...
GHSA-2f96-g7mh-g2hx (high) GitPython: Command Injection via git long-option prefix abbreviation bypass of CVE-2026-42215 blo...
GHSA-mv93-w799-cj2w (high) GitPython: Newline injection in config_writer() section parameter bypasses CVE-2026-42215 patch, ...
GHSA-3rp5-jjmw-4wv2 (high) GitPython: git-config section-name injection enables arbitrary config directives (core.sshCommand...
GHSA-mfx4-hv73-q22v AIOHTTP: HTTP request smuggling via WebSocket upgrade
GHSA-cq5v-8q36-5273 AIOHTTP: Out-of-bounds heap read in C HTTP response parser error path (malformed chunked response)
GHSA-539m-9xh6-q6rr (medium) GitPython: Incomplete unsafe_git_archive_options denylist omits --add-file / --add-virtual-file, ...
GHSA-3f7w-8rr8-f37f (high) GitPython: Unguarded git option forwarding in IndexFile.checkout() and TagReference.create() enab...
GHSA-p538-c434-8v24 (medium) GitPython: Arbitrary file truncation via git rev-list --output argument injection in unguarded Co...
GHSA-94p4-4cq8-9g67 (high) GitPython: Environment-variable exfiltration via Repo.create_remote() / Remote.add() URL (incompl...
GHSA-6p8h-3wgx-97gf (high) GitPython: Incomplete unsafe_git_clone_options denylist omits --template enabling arbitrary comma...
GHSA-fjr4-x663-mwxc (high) GitPython: Arbitrary file overwrite via git diff --output argument injection in Diffable.diff (ke...
GHSA-r9mr-m37c-5fr3 (high) GitPython: Unsafe git option guard bypass via single-character kwarg value token smuggling enable...
GHSA-hh9p-6wh2-4mfc (medium) GitPython: Arbitrary file read via --pathspec-from-file in IndexFile.remove() and Head.checkout()
GHSA-9rj7-rf2p-w77r (high) GitPython: Unguarded git option forwarding in Repo.init enables arbitrary command execution via -...
GHSA-4gmw-gg2m-w46p (high) GitPython: Unguarded git read-tree option forwarding in IndexFile.from_tree/reset/merge_tree enab...
GHSA-wvpp-8hx9-p66j (high) GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token ...
GHSA-jm78-9fvv-mhgr (high) GitPython: git-config OPTION-name injection via =/#/whitespace bypasses name validator, enabling ...
GHSA-hmq2-w58f-27jc (high) GitPython: Arbitrary Git Repository Creation Outside the Working Tree via Unvalidated .gitmodules...
GHSA-7833-fr7j-v32q (high) GitPython: Arbitrary local file content disclosure via [include] directive in untrusted .gitmodul...
GHSA-284h-m62q-gf8w (critical) GitPython: Dormant multi-line git-config values are corrupted into live injected directives (e.g....
GHSA-8mcc-hrx5-hvxc (high) GitPython: clone_from()/clone() omit --separate-git-dir from unsafe_git_clone_options, enabling a...
GHSA-5xxx-qhh7-9287 (medium) GitPython: Incomplete unsafe_git_revision_options denylist omits --contents/-S, enabling arbitrar...
GHSA-3wxw-xv34-2frg (medium) GitPython: TagReference.create positional reference bypasses kwargs-only --file guard, enabling a...
GHSA-3cv6-jpf6-8222 (medium) LiteLLM: Authenticated SSRF and provider-credential exfiltration via unvalidated request-body rou...
GHSA-j934-xhv5-fg8f (medium) Soup Sieve: Polynomial-time ReDoS (O(n²)) in the whitespace/comment trimming regex `RE_WS_END` (t...
GHSA-gjv8-xp57-g29c (medium) Soup Sieve: Polynomial-time ReDoS (O(n²)) in the `IDENTIFIER` / `VALUE` selector sub-patterns
PYSEC-2026-3982 (high) GitPython: Repository content can impersonate the git directory, leading to arbitrary code execution
PYSEC-2026-3984 (high) GitPython: Denial of Service via catastrophic backtracking (ReDoS) in Actor.name_email_regex — co...
GHSA-8988-9cw3-xx77 urllib3: HTTPS proxy TLS configuration may be ignored or overridden
GHSA-gh4c-6fx4-qh6g urllib3: Chunked Deflate streaming can enter an infinite loop
GHSA-vxq7-64xx-v4gw urllib3: HTTPResponse.stream()/read_chunked() buffers an unbounded chunk-size line into memory
GHSA-2g87-pp6c-29x5 aiohttp: Multiple instances of excessive or unbounded memory/CPU use
GHSA-69x8-hrgq-fjj8 LiteLLM: Password hash exposure and pass-the-hash authentication bypass

Data from Homebrew/advisory-database. Run brew vulns aider for a live check.

Analytics:

30 days90 days365 days
Installs4411,42010,031
Installs (--HEAD)0315
Installs on Request4411,42010,030
Installs on Request (--HEAD)0315
Build Errors0